關於uni-app你需要小心的坑

作爲vue語法開發的跨平臺開發框架雖然願望很美好,但是真的要實現跨平臺還是需要開發者搭建好的項目架構,靈活運行vue語法和模塊化開發思維。

H5適配

官方創新很好,又爲我們創造了一個尺寸單位,upx,但是考慮到項目遷移和開發通用,我決定還是使用px配合flexible實現適配,確保項目可以輕鬆移植到uni框架,需要改動@dcloudio/vue-cli-plugin-uni/packages/postcss文件,在postcss.config.js文件中引入的,保證我們小寫px自動轉換rem,大寫的不轉換,默認採用750px的設計稿,所以其他尺寸設計稿的需要注意轉換:

在這裏插入圖片描述

利用條件編譯在main.js中引入flexible.js,這樣就可以實現H5的適配,同時保證了我們的現有項目無縫升級到uni框架。當然在頁面js動態設置的px需要我們自己衡量是否需要適配,可以使用flexible自定義全局函數轉換rem。其他小程序px轉換規則保持不變。

prop單向數據流特性

當我們對組件重複設置某些屬性爲相同的值時,數據不會同步到view層。這就導致數據與視圖顯示不匹配,這時我們需要的是手動同步組件狀態,當組件內部狀態改變時,對外觸發事件,將新的狀態以參數的形式傳遞出去,這樣才能同步組件數據,父組件更改時,子組件也就能更新視圖了。

子組件:$emit('事件名稱','數據');

父組件:@事件名稱=“處理事件”

聲明週期那些事

首先我們需要清楚幾個概念,應用生命週期,頁面生命週期,還有組件生命週期:

應用生命週期

是項目啓動的過程,主要是在App.vue中聲明的,包括下面幾個:
在這裏插入圖片描述

onLanch中我們可以獲取啓動參數,包括scene等;其他的我們根據需要處理自己的邏輯。

頁面生命週期

每個頁面單獨的生命週期,我們經常會用到onLoad,可以獲取頁面參數,當然我們可以自己封裝一層頁面組件,然後將頁面參數綁定到當前頁面實例$query,保證了同vue一致的開發體驗。onReady代替vue的mounted,此時可以訪問頁面實例以及視圖結構。

組件生命週期

區別於頁面生命週期,沒有onShowonLoad,但是vue的生命週期是支持的,created等。

跨端注意

雖然框架提供跨端能力,但是各個平臺表現還是有些不一致的,有時我們需要自己對齊,抹平平臺差異,保證開發一致。以下整理常見差異,並提供參考解決方案,作爲我們開發時需要注意的:

1、頁面和組件的數據data聲明爲方法返回一個對象,保證數據正確銷燬。

2、開發統一採用vue語法的開發方式,模板數據綁定和事件監聽。

3、頭部導航欄建議採用自定義的方式,下拉刷新採用mescroll-uni版的,體驗相對較好,而且可以自定義樣式,保證跨端開發以及表現一致。

4、文件名或文件夾名中不允許出現 @ 符號。canvas統一加idcanvas-id,v-ifv-for不要作用在用一個標籤上,必要時使用block或者template

5、圖片資源使用絕對路徑,背景圖片使用~@/static的絕對地址的方式。

6、暫時不支持跨端v-html模板語法,所以儘可能使用條件編譯在H5端使用。

7、目前測試在H5和微信小程序端可以使用過濾器和模板中使用自定義函數。

8、組件裏使用 slot 嵌套的其他組件時不支持 v-for,動態組件,異步組件暫不支持,不支持自定義組件上原生事件,直接綁定styleclasskeep-alivetransition等,建議不要使用v-show

9、微信中v-for在事件中使用item傳參時,訪問不到item,但是可以使用索引傳遞,目前官方標記爲bug,暫時可以通過索引曲線實現。

原文轉載地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章