快應用 元件(list)

2021-09-27 11:57:21 字數 4206 閱讀 3780

一、list教程

1)簡單場景:在頁面中實現 長列表 或者 螢幕滾動 等效果時,可以使用list。(平常會使用div,但是當dom結構複雜時,滾動頁面會出現卡頓現象,因為native無法復用div元件實現的列表元素)

而list由於會復用相同的type屬性的list-item,使得更加流暢。

使用list 元件**如下:

.........

載入更多

要實現dom片段的復用,要求相同type屬性的dom結構完全相同。所以,設定相同type屬性的list-item是優化列表滾動效能的關鍵;

注意:

list-item內不能再巢狀list

list-item 的type屬性為必填屬性

list-item內部需謹慎使用if指令或for指令,因為相同的type屬性的list-itemde dom結構必須完全相同,而使用if指令或for指令會造成dom結構差異;可以使用show指令代替if指令

2) 複雜場景:乙個商品列表頁,位於左邊和位於右邊的商品交錯顯示

列表中的列表元素可以分為三類,設定三種不同type屬性的 list-item。分別為:

a)在左,文字在右的list-item,type屬性自定義命名為productleft;

b ) 在右,文字在左的list-item,type屬性自定義命名為productright;

c)載入更多 list-item,type屬性自定義命名為loadmore

.........

.........

載入更多

list元件效能優化: 精簡dom層級,復用list-item,細粒度劃分list-item,關閉scrollpage四個方面;

其中,精簡dom層級,復用list-item是使用list元件必須遵循的優化原則,細粒度劃分list-item,關閉scrollpage適用於部分場景;

細粒度劃分的list-item,即列表中相同的dom結構劃分為盡可能小的列表元素(即list-item)

關閉scrollpage:list元件支援屬性scrollpage,預設關閉,標誌是否將頂部頁面中非list元素隨list一起滾動。開啟scrollpage會降低list渲染效能,

因此在開發者開啟scrollpage前,推薦先嘗試將頂部頁面中非list的元素,作為一種或多種type屬性的list-item,移入list從而達到關閉scrollpage提高渲染效能的目的;

3)list-item懶載入

懶載入,簡稱 lazyload,本質上是按需載入;

在傳統頁面中,常用的lazyload優化網頁的效能:

實現:不載入全部頁面資源,當資源即將呈現在瀏覽器 可視區域 時,再載入資源;

優點:加快渲染的同時避免流量浪費

在框架中,開發者也可以使用lazy-load概念優化列表的渲染:

實現:提前fetch請求足夠的列表資料儲存在記憶體變數memlist中,當list滾動到底部時,從memlist中提取部分資料來渲染list-item。當memlist中資料不足時,提前fetch請求資料,填充memlist

優點:每次網路請求與頁面渲染的數量不一致,減少首屏渲染占用的js執行時間,較少渲染後續list-item的等待時間;

上述實現**:

import from '../../common/js/data';

//模擬fetch請求資料

function callfetch(callback),500)

}

//記憶體中儲存的列表資料

let memlist = ;

export default,

oninit());

this.loadandrender();//獲取資料並渲染列表

},

loadandrender(dorender = true )

else if(!reslist.length)else

}

}.bind(this))

},

_renderlist()

if(memlist.length<=this.size)

},

rendermorelistitem()

}

}

4)吸頂效果

傳統頁面的實現思路

a)當手指向上滑動超過吸頂元素的初始位置,把吸頂元素固定在頂部;

b)當手指向下滑動到底吸頂元素的初始位置時,取消吸頂元素在頂部的固定;

吸頂在傳統web頁面中的實現思路是監聽scroll事件,當頁面滾動到一定位置時,做一些事情來改變吸頂元素在視窗中的位置;

框架的實現思路

注意:在框架中scroll僅適用於list元件,且獲取的值是滾動的相對座標值,在使用時,需要通過累加來獲取當前滾動位置的絕對座標;

並且scroll在列表滾動時會被高頻觸發,存在潛在效能問題;

採用stack元件作為整個頁面的容器,stack元件的特性為:每個直接子元件按照先後順序依次堆疊,覆蓋前乙個子元件;

「吸頂」條件:

快應用 元件

自定義元件 為了更好的組織邏輯與 可以把頁面按照功能拆成多個模組,每個模組負責其中乙個功能部分,最後頁面將這些模組引入管理起來,傳遞業務與配置資料完成 分離 注意 自定義元件中資料模型只能使用data屬性,data型別可以是object 或 function 如果是函式,返回結果必須是物件 元件的引...

快應用 元件(map)

map元件 1 關於map元件的相關屬性 latitude longitude 調整地圖元件的中心位置 scale coordtype 縮放級別 2 地圖元件支援的四種覆蓋物,包括 marker,groundoverlay,polyline 和circle.markers latitude long...

卡片 元件 快應用元件庫H UI

h ui是一套為快應用開發者量身打製的ui元件庫,以傳統html5標籤為基礎,遵循主流前端框架樣式命名習慣,對快應用原生元件二次封裝而成,以實現快應用 全元件式開發 為目標,讓快應用開發就像搭積木!h ui是一套為快應用開發者量身打製的ui元件庫,以傳統html5標籤為基礎,遵循主流前端框架樣式命名...