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就行了。

相關文章
相關標籤/搜索