web app 無限載入終極解決方案

楊啟華發表於2019-03-04
  • 該專案 是一個演示了 web app 各大【scroll view】主流外掛的用法,主要面向 vue 專案開發者,使用 vux 作為專案骨架,scroll view 採用圖文的方式進行佈局,可以無限載入資料,用於測試各大外掛在滑動的過程中是否卡頓,滑動效果是否自然,比較了8種較為主流的 scroll view 外掛(具體見外掛比較),並對 mescroll 進行了原始碼上的封裝,對 better-scroll 進行了使用上的封裝。

1.掃碼快速體驗(使用手機瀏覽器開啟)

二維碼

2.安裝與執行

  npm install
  npm run dev
複製程式碼

3.專案打包

  npm run build
複製程式碼

4.演示部分介面截圖(4種,其他外掛效果安裝體驗)

圖一載入失敗 圖二載入失敗

圖三載入失敗 圖四載入失敗

5.外掛比較

scroll view 8款外掛比較
外掛名稱 GitHub 說明
vux https://github.com/airyland/vux 基於 vue 與 weui 移動端元件庫,但該 scroller 元件官方稱已經不再維護,建議使用第三方外掛。優點:無論 Android 還是 iOS,scroll view 都可以產生回彈效果,缺點:滑動卡頓、不自然,侷限於 vux 框架之中
better-scroll https://github.com/ustbhuangyi/better-scroll 算是 GitHub 上 star 最多的外掛了,很多專案在使用,詳細介紹見官網。優點:作者更新頻繁,非常上心(上次我凌晨2點多提了個issue,十分鐘之後就回復了),使用者較多,功能也非常豐富,具有有回彈效果,純文字列表滑動也比較自然。缺點:官方文件較為簡陋(僅僅是一些引數的介紹),基於vue的demo對初學者來說難度稍大,圖文列表滑動不太自然,且載入的資料越多越為明顯,尤其是在低端安卓機或iPhone5/6上滑動過程中會跳躍式的回閃
vue-scroller https://github.com/wangdahoo/vue-scroller 基於 Vue 的 滑動外掛,支援下拉重新整理和上拉載入,支援自定義下拉重新整理/上拉載入/無資料 dom 等。優點:具有有回彈效果,使用簡單,官方demo齊,上手較為簡單。缺點:圖文列表,當資料載入到一定程度後會比較卡頓;使用上僅限於vue
mescroll https://github.com/mescroll/mescroll 精緻的下拉重新整理和上拉載入 js框架.支援vue,完美執行於移動端和主流PC瀏覽器,定製化非常高,預設UI很精緻。優點:文件齊全,官方例子非常多,非常容易使用,具有回到頂部等貼心功能。缺點:無回彈效果,在iOS上使用下拉重新整理會與iOS瀏覽器預設回彈效果衝突
vue-infinite-scroll https://github.com/ElemeFE/vue-infinite-scroll 餓了麼出品,封裝成 vue 指令,程式碼簡潔,但是功能較為簡單。優點:可對原始碼進行定製化開發。缺點:功能非常簡單,僅支援無限載入,且不能定製化dom
vue-infinite-loading https://github.com/PeachScript/vue-infinite-loading 功能和 vue-infinite-scroll 類似,僅支援無限載入,但是以元件方式進行封裝。優點:程式碼簡明易懂,有官方示例,文件齊全,支援橫向scroll。缺點:功能簡單,不支援下拉重新整理,僅限於vue
VueMugenScroll https://github.com/egoist/vue-mugen-scroll 一款無限載入外掛,使用上也比較簡單。優點:引數較少,新手比較容易上手。缺點:功能單一,不支援下拉重新整理,僅限於vue
Scrollload https://github.com/fa-ge/Scrollload 一款下拉重新整理,上拉載入的移動端外掛,無任何依賴,對iOS區域性滾動的坑進行了較為全面的分析。優點:示例豐富,對iOS回彈效果和專案回彈效果的衝突提出了較為全面的解決方案。缺點:對vue的支援不是很友好,解決區域性滾動問題會依賴於其他庫

6.總結

  • 1.scroll view 外掛非常多,但實現方式無非是兩種

    • 1-1.自己使用 css3 transform 來實現滾動動畫,可以很好的實現回彈效果,但很難掌控,所以會造成滑動不自然,上述外掛vux、better-scroll、vue-scroller都是使用的該方案
    • 1-2.使用原生div效果(overflow-y:auto)來實現滑動,滑動效果會較為自然,但安卓上無回彈效果,且滑動事件易於iOS預設滑動事件衝突,上述外掛其餘5種使用的該方案。
  • 2.better-scroll 官方demo相對新手來說較為複雜,vue-scroll-mobile-demo 中對 better-scroll 進行了使用上的封裝(基於vue)

  • 3.mescroll 在 vue 中使用存在一些弊端(如元件在deactivated時未登出滑動事件,在deactivated時未銷燬回到頂部圖片),vue-scroll-mobile-demo 對 mescroll 的原始碼進行了相應的完善。

  • 4.個人觀點:專案中 scroll view 為文字列表且滾動載入資料較少時,可使用 better-scroll,畢竟滴滴也在用,使用者很多。專案中 scroll view 為圖文列表時,且需要無限載入資料時使用 mescroll,可參照官方示例。

7.專案連結

相關文章