关于mpvue的几个坑点

微信小程序的框架众多,而现在我只想记录一下mpvue的几个点…祝你采坑成功。

微信小程序在语法规范、API、组件外,因为多了个可组件化component,主要点始终落在app.json、app.wxss、app.js和每个页面和组件的配置上,都是相似雷同的事情,详情移步官方文档

相对而已,mpvue是在vue基础上加入了微信小程序的支持,在loader和编译方面多做支持,编码规范以vue为标准。

使用

现在已vue-cli生成mpvue/mpvue-quickstart模板深入

相对于原生小程序,mpvue在代码目录主要维护:

  • App.vue: 作为小程序的创建点和挂载点
  • main.js
  • app.json
  • vue模型的组件页

配置每页导航栏信息

v1.1.1以下

找到每页的的main.js,添加export default对应内容

import Vue from 'vue'
import App from './index'
const app = new Vue(App)
app.$mount()
export default {
  // v1.12后不再使用config为到场app.json
  config: {
    "navigationBarBackgroundColor": "#ffffff",
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "微信接口功能演示",
    "backgroundColor": "#eeeeee",
    "backgroundTextStyle": "light"
  }
}

v1.1.1以上

直接使用

  • main.js
  • main.json

动态替代方案:

wx.setNavigationBarTitle({
  title: '关卡'
})

FAQS

报错mpvue 未找到入口 app.json 文件

正常情况:

npm run dev

执行一下mpvue的编译

在dist目录下会自动产生一个app.json

题外话:安装依赖包的时候或者npm run dev的时候提示缺少依赖的话,直接把node_modules 下面的文件全部删掉,然后重新npm intall 简单粗暴解决问题

分析: 因为缺乏依赖而没自动生成app.json

解决之道: 只需要把packpage.json里的mpvue-loade后面的‘^’去掉,重新安装依赖即可。

npm install
npm run dev

npm run dev 无法编译成功

情况如下:

$ npm run dev
> color-life@1.0.0 dev /home/happy/Dev/coding/color-life
> node build/dev-server.js

尝试如下也无法解决:

1.npm run dev不行
2.删除module重装也不行
3.重新初始化项目也不行

这主要是编译时遇到代码缺失

解决:

如果有组件只有纯template,加上即可:

<script>
  export default {}
</script>

v-show使用失效

分析v-show的特点:

  • v-show只能简单的切换元素的css属性 display
  • 不支持 <template> 元素
  • 不支持 v-else

使用v-show时,很容易将v-show直接下载创建的组件上,如

<template>
    <components v-show="isShow"></components>
</template>

因此组件的显隐状态无法根据isShow响应状态

解决:

只需要在组件外包括一层元素进行控制

<template>
    <div v-show="isShow"> 
        <components></components>
    </div>
</template>    

科普:v-if直接是创建-销毁组件

拥有slot的组件无法自动编译成功

只需要关闭编译重新运行

npm run dev
    原文作者:chovitaminl
    原文地址: https://segmentfault.com/a/1190000016101819
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞