首页
/ Better-Scroll 核心使用指南:从基础到插件化开发

Better-Scroll 核心使用指南:从基础到插件化开发

2025-07-06 00:46:20作者:盛欣凯Ernestine

前言

Better-Scroll 是一个专注于解决移动端滚动场景的 JavaScript 库,其核心设计理念是通过分层架构实现功能解耦。本文将系统性地介绍如何在不同场景下使用 Better-Scroll,帮助开发者根据项目需求选择最合适的集成方式。

基础核心用法

对于只需要基本滚动功能的场景,可以直接使用核心模块:

import BScroll from '@better-scroll/core'

const bs = new BScroll('.wrapper', {
  scrollX: true,  // 开启横向滚动
  scrollY: true,  // 开启纵向滚动
  click: true,    // 允许点击事件
  momentum: true  // 开启动量滚动效果
})

关键配置说明:

  • scrollX/Y:控制滚动方向
  • click:解决移动端点击事件延迟问题
  • momentum:实现惯性滚动效果
  • bounce:控制边界回弹效果

插件化扩展机制

Better-Scroll 采用插件化架构设计,当需要增强功能时,可以通过注册插件来实现:

插件使用范式

import BScroll from '@better-scroll/core'
import PluginName from '@better-scroll/plugin-name'

// 注册插件
BScroll.use(PluginName)

const bs = new BScroll('.wrapper', {
  // 插件配置项
  pluginConfig: true
})

典型插件示例:上拉加载

import BScroll from '@better-scroll/core'
import Pullup from '@better-scroll/pull-up'

BScroll.use(Pullup)

const bs = new BScroll('.wrapper', {
  probeType: 3,  // 实时派发scroll事件
  pullUpLoad: {
    threshold: 50  // 上拉距离阈值
  }
})

// 监听上拉加载事件
bs.on('pullingUp', () => {
  // 加载数据逻辑
  fetchData().then(() => {
    bs.finishPullUp()  // 结束加载状态
  })
})

全功能集成方案

对于需要快速开发原型或功能需求复杂的场景,可以使用全功能包:

import BScroll from 'better-scroll'

const bs = new BScroll('.wrapper', {
  pullUpLoad: true,  // 上拉加载
  wheel: {           // 轮播选择器
    selectedIndex: 0,
    rotate: 25,
    adjustTime: 400
  },
  scrollbar: {      // 滚动条
    fade: true,
    interactive: true
  },
  mouseWheel: true  // 鼠标滚轮支持
})

注意:全功能包体积较大,生产环境建议按需引入插件。

最佳实践建议

  1. 性能优化

    • 对于长列表,使用observe-dom插件自动监听DOM变化
    • 合理设置probeType级别,避免不必要的事件触发
  2. 异常处理

    bs.on('refresh', () => {
      console.log('内容刷新完成')
    })
    
    bs.on('destroy', () => {
      console.log('实例已销毁')
    })
    
  3. 生命周期管理

    • 在Vue/React组件卸载时调用bs.destroy()
    • 内容变化后及时调用bs.refresh()

结语

Better-Scroll 通过模块化设计提供了灵活的扩展能力,开发者可以根据项目需求选择合适的使用方式。核心包+插件的方式适合追求极致性能的场景,而全功能包则适用于快速开发的场景。理解其分层架构设计理念,能够帮助开发者更好地应对各种滚动交互需求。