這是第一次用mpvue寫項目啊,雖然項目難度不大,但是碰到的問題不小,而且項目還沒上線,估計到時候還會碰到問題,所以這篇應該還會更新。
小程序,跟瀏覽器的環境是有挺多差異的,比如沒有window對象,頁面也不是在body元素里,而是page元素里,div變成了view,而圖片的引入,小程序是沒有img標簽的,mpvue會自動把img轉成小程序的image,有一點比較坑的就是小程序的這個標簽的寬高會有預設
width: 320px; height: 240px;
所以你像普通的瀏覽器里那樣,設置一個圖片的寬,然后高度會自適應是不現實的,解決辦法的話,要不然就是寬高你的設定好,但是這樣比較局限,好在image 有個屬性
mode="widthFix"
設置了這個屬性后,image 就 可以像img標簽一樣了。
mpvue里能使用npm 裝部分的插件,但有些東西裝不了,例如vue全家桶里的vue-router,據官網說,是因為小程序原生的路由已經很完善了,所以直接使用小程序路由就好,還有表單組件啊,ajax啊,網上都有推薦用小程序原生的,但是我項目里ajax使用了flyio,因為要考慮這個項目可以移植到H5上。
還有微信里經常的拖動頁面導致出現空白部分的,可以想要禁止的頁面建一個main.json 然后設置
{ "disableScroll": true }
我項目由於是個重構項目 之前這個項目的用到了canvas,小程序里也有,但是就是和瀏覽器有些許差異,比如 canvas.getContext('2d') 在mpvue 也就是小程序里是這樣的 wx.createCanvasContext(canvas) 然后需要一個draw() 方法才會繪制,這些查文檔都有,但是有個比較坑的,在web是 fillStyle 在小程序里是 setFillStyle,不知道是不是我粗心大意,我沒在文檔里查到, 卡了有段時間,自己網上找例子找到了。
總結 mpvue 不能完全模擬vue來寫小程序,但我感覺比直接學原生要更快接受一點,好些vue的東西都可以使用,比如slot v-html(官網還說不能使用...我去問了人才知道可以使用),但也可能是我這個項目不復雜,如果大型項目,應該還是要斟酌一下,是直接原生,還是學習這種流行庫轉小程序或者說是用流行庫語法來寫小程序的。目前市面上有很多這種,截止今天18/09/04,我知道的就有小程序官方wepy、美團mpvue,這是vue方面的,react的有taro、anujs(在正美群里天天看正美發...),五花八門,選都選不過來,當然最后這些都是會轉為小程序的,所以如果繼續做小程序下去,學習原生語法是一定不會虧的,就怕微信經常改API就完蛋了!