最近因為工作需要入門了一下小程序,邊入門也邊在思考小程序的應用場景,“用完即走” 四個字一直浮現在腦海。正好最近在學駕照,因為以前一直對車不感冒,所以連奔馳都不認識,正好做個車標速查的小程序,非常符合 “用完即走” 的理念
因為小程序是國產的,所以 文檔 是比較友好的,基本上花個半天看下就可以入門了。在一個初學者的角度,談談對小程序的感受
首先,小程序這個東西出現的用意是非常好的,依托於微信,自帶社交、支付等,非常適合傳播,比如斗地主這樣的小程序(小游戲),分享到群,然后開玩,用完即走,非常之爽
然后,小程序的運行本身不依托於瀏覽器,沒有 dom 的概念,在性能上,也比 h5 流暢了不少
可以說,小程序這個東西,還是非常有前途的
然后來說說開發這個 車標速查 小程序時候踩的一些坑吧:
- index 頁面右側有個 a-z 的導航,如果是 web 端,用錨點即可解決,但是小程序沒法用錨點,正確的解決方案是用 scroll-view 組件,而且需要設置
height屬性(程序中設置 scroll-view 的 height 屬性為 100%),並且父節點需要設置 height 屬性為 100%(程序中設置 page 標簽的 height 為 100%)本來還想做導航到指定區域時候的 active,但是不好做,遂放棄 - 小程序沒有 div p 等標簽,只能用它自帶的 組件,可以把 view 組件當作是 web 開發時候的 div
- 因為我抓取的頁面,有直接抓取 html 代碼,那么就有個問題,如何在小程序中插入 html 代碼?如果是 web 開發,
innerHTML即可,但是小程序沒有 dom,可以用 wxParse,其實就是把 html 轉換為了小程序語言的組件(沒有看過具體實現,我覺得應該就是先轉為抽象語法樹(Abstract syntax tree),然后替換) - 有個地方想用到類似 Vue 的 filter 功能,小程序中可以用 wxs 實現,同時貌似發現小程序
{{}}中居然不能運算?只能基礎賦值?(小程序其實自帶了富文本組件 rich-text,但是不好用) - 小程序中有專門的 css 叫做 wxss,它建議用單位
rpx,規定屏幕寬為 750rpx。建議用 iPhone6 做設計稿,375px,然后設計稿一般是雙倍,也就是 750px,那么 1px 就對應 1rpx 了,直接按照設計稿來就好了 - app.js 有個勾子叫做 onLaunch,在小程序啟動的時候會觸發,這讓小程序看起來更像是 app,因為類似 Vue 這樣的 web app 並沒有這樣的勾子
- 如果點擊右上角要能夠分享,必須要寫 onShareAppMessage,而這個函數會在轉發的時候觸發。這點設計不是很能理解,我的觀點是這個配置應該放在 xx.json 里面,而不是放在類似這樣的勾子函數里
- project.config.json 不需要自己去寫,而是改變微信開發者工具里的一些配置后,會自動更新,類似 Alfred workflow 開發時候的 info.plist 文件
- 最后說到發布,貌似一個賬號只能發布一個小程序/公眾號?之前賬號注冊了一個公眾號,現在不能添加小程序了,只能再注冊一個賬號了
接下去計划用 mpvue 來改寫這個簡單的小程序
