JyLie

vuePress-theme-reco JyLie    2017 - 2023
JyLie

Choose mode

  • dark
  • auto
  • light
主页
分类
  • API
  • HTML
  • css
  • vue
  • Linux
  • Docker
  • Webpack
  • WebGL
  • PixiJS
  • Github
  • BOM
  • XML
  • bug
  • ie
  • uniapp
  • IE
  • mysql
  • font
  • bom
  • canvas
  • video
  • html
  • JavaScript
  • js
  • 运算符
  • RegExp
  • 编码
  • MiniApp
  • nginx
  • Tool
  • node.js
  • cat
  • nodejs
  • protocol
  • URL
  • FLOW
  • DNS
  • Protocol
  • python
  • 安全
  • linux
  • shell
  • IDE
  • Packer
  • ViteJS
  • git
  • vendor
  • WebApp
  • WebView
  • Window API
  • webview
  • 规范
标签
时光轴
GitHub
author-avatar

JyLie

74

Article

79

Tag

主页
分类
  • API
  • HTML
  • css
  • vue
  • Linux
  • Docker
  • Webpack
  • WebGL
  • PixiJS
  • Github
  • BOM
  • XML
  • bug
  • ie
  • uniapp
  • IE
  • mysql
  • font
  • bom
  • canvas
  • video
  • html
  • JavaScript
  • js
  • 运算符
  • RegExp
  • 编码
  • MiniApp
  • nginx
  • Tool
  • node.js
  • cat
  • nodejs
  • protocol
  • URL
  • FLOW
  • DNS
  • Protocol
  • python
  • 安全
  • linux
  • shell
  • IDE
  • Packer
  • ViteJS
  • git
  • vendor
  • WebApp
  • WebView
  • Window API
  • webview
  • 规范
标签
时光轴
GitHub
  • 微信小程序mpvue框架的使用指南

    • 配置每页导航栏信息
      • mpvue@v1.1.1 以下
      • v1.1.1 以上
    • 报错 mpvue 未找到入口 app.json 文件
      • npm run dev 无法编译成功
        • v-show 使用失效

        微信小程序mpvue框架的使用指南

        vuePress-theme-reco JyLie    2017 - 2023

        微信小程序mpvue框架的使用指南


        JyLie 2018-08-17 MiniAppmpvueVue

        上篇文章讲了微信小程序原生开发的常用实战经验,继微信小程序原生开发的使用指南 后,本文总结下微信小程序 Vue.js 风格框架 mpvue

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

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

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

        需要注意的是,如果在开发过程中遇到请求数据时,wx.request 无返回结果的情况,有可能是服务端配置的域名校验不通过,所以为了避免开发时遇到类似情况,需要在微信开发工具》本地设置》勾选 不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书

        # 使用

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

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

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

        # 配置每页导航栏信息

        # mpvue@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',
          },
        };
        
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14

        # v1.1.1 以上

        直接使用

        • main.js
        • main.json

        # 动态替代方案:

        wx.setNavigationBarTitle({
          title: '关卡',
        });
        
        1
        2
        3

        # 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
        
        1
        2

        # npm run dev 无法编译成功

        情况如下:

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

        尝试如下也无法解决:

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

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

        解决:

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

        <script>
          export default {};
        </script>
        
        1
        2
        3

        # v-show 使用失效

        分析 v-show 的特点:

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

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

        <template>
          <components v-show="isShow"></components>
        </template>
        
        1
        2
        3

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

        解决:

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

        <template>
          <div v-show="isShow">
            <components></components>
          </div>
        </template>
        
        1
        2
        3
        4
        5

        科普:v-if 直接是创建-销毁组件 ### 拥有 slot 的组件无法自动编译成功 只需要关闭编译重新运行 npm run dev

        # 参考文献

        • 原文-微信小程序原生开发的使用指南
        • 原文-微信小程序 mpvue 框架的使用指南
        • mpvue 官网
        • 微信小程序文档