mpvue微信小程序項目踩坑記錄

1.mpvue入門教程, http://mpvue.com/mpvue/quickstart.htmlcss

# 1. 先檢查下 Node.js 是否安裝成功 $ node -v v8.9.0 $ npm -v 5.6.0 # 2. 因爲衆所周知的緣由,能夠考慮切換源爲 taobao 源 $ npm set registry https://registry.npm.taobao.org/
 # 3. 全局安裝 vue-cli # 通常是要 sudo 權限的 $ npm install --global vue-cli@2.9 # 4. 建立一個基於 mpvue-quickstart 模板的新項目 # 新手一路回車選擇默認就能夠了 $ vue init mpvue/mpvue-quickstart my-project # 5. 安裝依賴,走你 $ cd my-project $ npm install $ npm run dev

 

2.mpvue不支持ElementUI,不支持vue-router;html

3.新增頁面,須要重寫npm run dev 進行編譯;vue

4.安裝依賴不用寫webpack配置文件,vue-cli webpack自動配置;node

5.npm安裝node-sass失敗,須要安裝淘寶鏡像,進行安裝部分依賴  ,且強烈推薦cnpm,安裝速度很快;webpack

npm install -g cnpm --registry=https://registry.npm.taobao.org

6.小程序頁面相對路徑的圖片不顯示,解決方法:須要把圖片放到static目錄下;ios

7.小程序圖片不能等比例拉伸或壓縮,處理圖片使用小程序給的image組件 設置mode有效值;git

8.vue-cli建立的項目  eslint代碼嚴查嚴格,一直會出現報錯,安裝模板能夠不安裝eslint依賴;github

9.小程序一些綁定元素 換成vue寫法,小程序提供的組件方法能夠繼續使用,換成vue語法就能夠使用;web

10.mpvue中生命週期不要用created,用了created即便你沒有打開那個頁面,也會觸發裏面的內容。用mounted來作一些頁面初始化的事情;vue-router

11.利用a標籤跳轉傳參,參數被編譯成字符串。須要加點 擊事件,使用 wx.navigateTo({ url });

12.mian.js全局引用scss不生效,語法報錯,須要單文件引入。可是css能夠在main.js中全局引用;

13.後臺給的接口數據是富文本(html)內容,但.微信小程序不顯示html格式的內容;

  嘗試解決方案1:百度解決的方法是使用wxParse,然而對mpvue不能更好的支持;

  嘗試解決方案1:使用v-html,但官網提出不支持v-html,直接被編譯成rich-text;可是微信提供的rich-text組件,不能修改內部標籤樣式 ,圖片超出很大,直接能夠橫向滑動,必需要處理因此此方法不可行;

  最終解決方案:

  使用mpvue-wxparse

  1.裝依賴

cnpm install mpvue-wxparse -D

  2.在須要用到的頁面引用,而後添加 wxParse組件;

import wxParse from "mpvue-wxparse";
components: { wxParse },

 3.語法使用

<wxParse :content="content" />

demo 

<template>
  <div>
    <wxParse :content="content" />
  </div>
</template>

<script> import wxParse from "mpvue-wxparse"; export default {   components: {     wxParse   },   data() {     return {     content:       '<div>測試代碼</div><img src="https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo_top_ca79a146.png" alt="">'       };   } }; // </script>

14.vue轉小程序編譯渲染會轉成wxml,wxml不支持過濾器,因此這部分功能不能使用;

15.template 中沒法支持複雜的 JavaScript 表達式。 可支持三目運算和簡單的v-if,v-else;

16.遇到過微信小程序wx.navigateTo不起做用的緣由:

  1.app.json裏tabBar裏面的list使用的pagePath跟wx.navigateTo路徑同樣的話不起做用,實現不了跳轉。

  2.能夠使用wx.switchTab和和wx.redirectTo來代替,可是有必定的不一樣;

  3.wx.switchTab是惟一能跳轉到 tabBar 頁面,而wx.switchTab卻只能設置tabBar相同的路徑

  4.wx.redirectTo關閉當前頁面,用wx.navigateTo時,能用wx.navigateBack ;

  5.wx.navigateTo能跳轉下一頁面還能有返回上一頁面的功能;

17.在vue2.0中出現了數據緩存問題,頁面只顯示以前加載的時候調用數據,若是返回到列表再進入詳情那麼頁面是不會從新渲染頁面,data初始化的數據不會從新讀取,只會緩存以前的賦值。我最後只能用v-if作判斷來解決的。由於不是路由跳轉,因此沒有辦法在路由作文章。

18.每次進入商品詳情,新加載的數據完成以前會先顯示上次緩存的數據內容,解決方法,加loading,數據加載完成以後,去掉覆蓋頁面的loading,用戶就不會看到數據的明顯切換;

19.小程序button默認邊框沒法去除,解決方法;

button::after{ border: none;

}

20.wx.request不支持PATCH請求,官方說目前也不打算支持。。。

21.wx.chooseAddress 獲取位置成功後,賦值無效,緣由是this指向問題。 

var that = this; wx.chooseAddress({   success: function(res) {   that.chooseAdd = false;   that.addressList = res;
  } });

22.ios端catchtouchmove事件,上下滑動會穿透到page跟着一塊兒動.若是使用禁止滑動(catchtouchmove='true' ),則整個頁面滑動失效,投機取巧處理了下;

  解決方法:微信小程序--滾動視圖容器

23.mpvue組件樣式不生效;搞了半天發現問題:一個頁面調用這個組件沒問題,但兩個和兩個以上頁面調用這個組件,這個組件的樣式將會失效。解決方法參考:https://github.com/Meituan-Dianping/mpvue/issues/7

修改webpack 配置 webpack.*.conf.js 中文件,把 || count >= 2刪除便可;

new webpack.optimize.CommonsChunkPlugin({ name: 'vendor', minChunks: function (module, count) { // any required modules inside node_modules are extracted to vendor
        return ( module.resource &&
          /\.js$/.test(module.resource) && module.resource.indexOf('node_modules') >= 0 ) || count >= 2 } }),

 

new webpack.optimize.CommonsChunkPlugin({ name: 'vendor', minChunks: function (module, count) { // any required modules inside node_modules are extracted to vendor
        return ( module.resource &&
          /\.js$/.test(module.resource) && module.resource.indexOf('node_modules') >= 0 ) } }),

 

25.git下載代碼mpvue項目,npm run dev以後找不到app.json入口文件。修改package.json文件,把"mpvue-loader": "^1.0.13",裏面的‘^’去掉,而後從新裝依賴,再npm run dev就行了。

相關文章
相關標籤/搜索