寫小程序有一個多月了炉奴,有一些感想逼庞,有一些心得,也有一些吐槽瞻赶。
思維比較發(fā)散赛糟,想到哪寫到哪。
選擇 mpvue共耍,uniapp虑灰,taro吨瞎,還是用原生痹兜?
如果只是因為開發(fā)人員更熟悉 vue/React
的語法,而去選擇mpvue
或者taro
颤诀,我認(rèn)為是沒有必要的字旭。小程序原生語法吸收了現(xiàn)代框架的特點,上手很快崖叫。小程序的文檔里遗淳,語法是最不重要的部分,而需要花時間閱讀的是api心傀,登錄流程屈暗、原生組件、wxml節(jié)點信息獲取等等等等。也就是說养叛,即使用了輪子种呐,還是要花時間閱讀小程序文檔。
如果是看中第三方框架解決了原生語法的一些問題弃甥,比如數(shù)據(jù)流管理爽室、渲染速度(據(jù)說uniapp
和taro
比原生更快)等,可以考慮用輪子淆攻。
但是第三方輪子最終畢竟還是會轉(zhuǎn)譯成原生語法阔墩,小程序不支持的東西第三方框架肯定也不支持,還可能會有新的坑瓶珊,可能會出現(xiàn)既要讀第三方框架的文檔啸箫,還需要讀小程序文檔的情況,技術(shù)選型時應(yīng)考慮清楚伞芹。
UI 組件庫選擇
- WeUI ---------->和微信保持分風(fēng)格一致
- Vant Weapp------------>電商類支持完整
- colorUI ----------> 顏色豐富
- iview Weapp -------------> 風(fēng)格清新筐高,組件兼容性好
- Wux Weapp ------------> 個人開發(fā)者出品,組件異常豐富丑瞧,讓人垂涎柑土。但是偶爾會遇到 bug,入坑需謹(jǐn)慎
- taroUI ---------->和taro綁定(應(yīng)該是吧绊汹?)稽屏,風(fēng)格偏硬朗,適合工具類小程序
不用**西乖,臣妾做不到啊
小程序一些不太給力的地方都能忍一忍狐榔,比如一個組件4個文件,npm半殘 等等等等获雕,但是有些東西真心沒法忍:
-
wx.request()
薄腻,對于習(xí)慣了promise
的同學(xué)來說,沒法忍届案。有時間的朋友可以自己封裝庵楷,也可以用 mp-req,封裝了自動wx.login()
楣颠、攔截器尽纽、請求緩存等。 - 路由半殘童漩,小程序路由仿照get請求的形式弄贿,傳任何類型的參數(shù),都會變成
String
矫膨。怎么講差凹,也不是不能用期奔。不能忍的同學(xué)可以用 mp-router。 - 沒有 類似 cookie 這種可以緩存數(shù)據(jù)且會過期的 cache 可用危尿,
setStorageSync()
存的數(shù)據(jù)不會過期能庆。解決方案的話可以用setStorageSync()
加過期時間封裝一個。
我遇到的 Wux weapp 組件庫的 bug
用了 Wux 大概4脚线、5個組件搁胆,遇到一些疑似bug。
-
DatePickerView 日期選擇器
maxDate
和minDate
傳入yyyyMMdd HH:mm:ss
格式的時間字符串時邮绿,在 iOS 下年份的 pickview 會消失渠旁。 -
Picker 選擇器
options
的value
為Number
時,組件無法正確初始化到選定的value
船逮。
是否如微信官方所說顾腊,小程序能保證多端一致性?
很遺憾挖胃,沒有杂靶。wxss
在三端(模擬器/iOS/Android)依然會有不一致的情況,模擬器看到的頁面無法保證在 iOS/Android 可以保持一致酱鸭; 甚至 Components
內(nèi)一些生命周期函數(shù)在模擬器上都有些意料之外的情況吗垮。
當(dāng)然這些問題微信官方早晚會解決 :) 。
列表渲染 Components 時遇到的小問題
有些朋友可能會在Component()
之外var/let
一些全局變量凹髓。需要注意的是烁登,在列表渲染該組件時,該變量的作用域在 page 內(nèi)所有的該組件蔚舀,某個子組件內(nèi)改變該變量的值饵沧,會影響其他子組件。
ECharts 在小程序中的一些問題
- ECharts 在 iOS 和 Android 下赌躺,默認(rèn)的 font-size不同狼牺。
- 在小程序中,ECharts 的 tooltip 默認(rèn)不展示 X 軸的值礼患。
- y軸數(shù)據(jù)為 null 時是钥,tooltip 處理略有不同,瀏覽器端展示
-
讶泰,小程序中展示null
咏瑟,且觸發(fā) tooltip 時 小程序端 canvas 圖表會消失。 - 在同一 ec-canvas(ECharts 的包裝) 下多次
chart.setOption(option)
時痪署,建議chart.setOption(option, true)
刷新,否則可能會有圖表重疊的問題兄旬。 - canvas 在小程序中是最高層級狼犯,
z-index
設(shè)得再高都無法被遮蓋余寥。小程序官方提供了cover-view
,但是兼容性不太好悯森。目前沒有太好的解決辦法宋舷,一般是在需要遮罩時將ec-canvas
的hidden="true"
。
那些文檔里沒有寫(或者我木有看到)的事
- 在
Component()
中可以使用observers
取代properties
中的observer
瓢姻,性能更好祝蝠,支持同時監(jiān)控多個data字段。注意:只有this.setData()
能觸發(fā)observers
幻碱,this.data.x = x
無法觸發(fā)绎狭。 -
this.setData({x:x})
包括兩個操作:1)this.data.x = x
,這個操作是同步的褥傍;2) 把data更新到view儡嘶,這個操作是異步的。 - 切換 tab 時無法觸發(fā)任何文檔中的生命周期事件恍风,包括
onHide()
和onSHow()
蹦狂,只有一個未完全支持的事件onTabItemTap()
可用。