mpvue的入门

2023-11-08

奔三路学习网移动版

mpvue菜鸟踩坑吃鸡篇一

时间:2018-04-25 11:46  来源:未知   作者:admin   点击:2811次
这个mpvue大大安装大家肯定都没问题的。

但安装预览的时候,不是用浏览器打开输入:localhost:8080。

而是打开微信开发者工具,把项目根目录导入进去。

坑一:不支持ElmentUI和Vue-router

不支持ElmentUI和诸如类似框架,穷开心的少年们,以为是把之前vue项目直接移入即可,同步生成小程序。

哦买噶,不惜这样啊!

包括Vue-Router我滴个神呀,也是要改为a标签然后写熟悉的微信小程序路径。

不过呢,就是可以写基础的vue和脚本比直接写view要来的爽。

让我先吹吹风外面凉快一会。

坑二:eslint连vue和js后缀文件都有严格校验

二话不说,直接找到
build目录的webpack.base.conf.js把器rule注释掉。
 // {
      //   test: /\.(js|vue)$/,
      //   loader: 'eslint-loader',
      //   enforce: 'pre',
      //   include: [resolve('src'), resolve('test')],
      //   options: {
      //     formatter: require('eslint-friendly-formatter')
      //   }
      // },
注释我吧,否则你没中饭吃

哈哈,坑终归是要填的,谁叫我写vue两三年了呢。

因为发ajax请求需要使用微信小程序里的wx.request这种api,不兼容得改一下。

4,css有一些hack报错得改一下。

5,脚手架目录结构不一样,需要手工调整一下。

6,初始化组件的方式不一致,需要简单的修改下,入口必须放到page里,之前我们的入口也是components。

7,最坑的是有这么一个bug,搞了我好久:components引用大小写导致组件失效 · Issue #9 · Meituan-Dianping/mpvue

8,静态资源的限制,属于小程序的,所以这里需要对静态资源,比如图片,font字体做一些特殊的webpack配置,这不属于mpvue的问题,自己配置下解决就好了。

9,项目是ts写的,自己加个loader就好。

其他的不涉及DOM,BOM的,该删的也要删一会,整体转了有3,4个小时吧,以上这些问题。最后效果还是不错的,帮team的趟一下坑。

总结一下,mpvue对组件的转换支持真的很棒,只要注意了文档和我上面说的几点,稍加改造一个vue应用转小程序就实现了。



大坑三.Cannot assign to read only property 'exports' of object '#<Object>' 编译报错

这是因为引用第三方插件的时候,带入了module.exports的写法,webpack可以使用require和export ,但是不能混合使用import 和module.exports,你需要做的是更新根目录下的.babelrc文件配置

vue引入插件Cannot assign to read only property 'exports' of object

{
    "presets": [
        ["env", {
            "modules": false,
            "targets": {
                "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
            }
        }],
        "stage-2"
    ],
    "plugins": [
        ["transform-runtime", {
            "polyfill": false,
            "regenerator": true
        }]
    ],
    "env": {
        "test": {
            "presets": ["env", "stage-2"],
            "plugins": ["istanbul"]
        }
    }
}

大坑四.挂载在Vue.prototype上的属性,在模板语法里面是undefined,必须经过computed计算过一下才能用。via@noahlam

import config from './config'
Vue.prototype.$serverPath = config.serverPath

在页面中这样使用

<img :src="$serverPath + 'logo.png'" />

编译之后会变成这样的情况

<image src="undefinedlogo.png" ></image>

你需要做的是,在每个使用的页面computed里面返回this.$serverPath

大坑五.相对路径的图片不显示,比如

<img src="../../images/LOGO.png">

解决是:把路径import进来,或者是把图片放在static目录下引用,然而作为css background-image引用时,只能选择引用远程图片,或者相对目录小于8k(webpck配置有关)的图片,不然编译器会报错

<template>
    <div>
        <div class="test"></div>
        <img :src="imgUrl">
    </div>
</template>

<style>
.test{
    width: 48rpx;
    height: 48rpx;
    background-image: url("../../img/a.png");
}
</style>

<script>
import imgUrl from '@/img/a.png'

export default {
    data() {
        return {
            imgUrl
    }
}
</script>

大坑六.子组件数据检测的问题

比如我在某个页面引用了这样的一个组件,绑定数据myOrderList,同时我引入了vuex来做状态管理,管理myOrderList对象

### A页面中
 <order :isEnd="isEnd" :orderList="myOrderList"></order>
 
### B页面中更新"myOrderList"对象

this.$store.commit('updateList', {data: this.orderList});

当A页面再次显示的时候,子组件的数据流没有更新,打印myOrderList对象都有更新.我的解决办法是,先把myOrderList赋值为空,然后再次赋值store.state中的对象,问题就解决了.估计是mpvue的数据检测机制有问题,说得不对的地方希望大佬们斧正.

大坑七.原生组件引入的问题,参考在mpvue 使用 echarts 小程序组件,官方的文档已经很详细了,我这边说几个要点:

  • ready 为异步获取数据。
  • 为 init 添加接收 options 传参
  • page目录下main.js需要添加 usingComponents: {'ec-canvas': '../../../static/ec-canvas/ec-canvas'}
  • 需要放在static目录下

第一条和第二条尤为重要,大家切记


常见问题

如果这篇文档没找到您想要的内容,请到 mpvue/issues 进行查找。

vue-router 支持吗?

路由是不能支持的,因为小程序无法动态的插入和控制节点,几乎无法实现。而且小程序对页面的切换性能做了很多优化,页面切换体验也好了很多,所以使用 vue-router 也不那么必要

为什么我新增了页面,没有反应?

因为 webpack 编译的文件使用配置的 entry 决定的,新增的页面并没用添加进 entry,所以需要手动 npm run dev 一下,考虑不是高频操作,所以还可以忍受

能不能引用第三方的 UI 库?

原理上是可以的,但是要去掉 Dom 和 Bom 相关的 API 操作,还要去掉 mpvue 不支持的一些 vue 特性,小程序不支持的 css 选择器等,去掉这些就可以使用了,欢迎大家贡献 mpvue 的 UI 组件库。

能否使用 echarts 等小程序原生组件?

可以,可以看下demo

如何获取小程序在 page onLoad 时候传递的 options

在所有 页面 的组件内可以通过 this.$root.$mp.query 进行获取。

如何获取小程序在 app onLaunch/onShow 时候传递的 options

在所有的组件内可以通过 this.$root.$mp.appOptions 进行获取。

如何捕获 app 的 onError

由于 onError 并不是完整意义的生命周期,所以只提供一个捕获错误的方法,在 app 的根组件上添加名为 onError 的回调函数即可。如下:

export default {
   // 只有 app 才会有 onLaunch 的生命周期
   onLaunch () {
       // ...
   },

   // 捕获 app error
   onError (err) {
       console.log(err)
   }
}


(责任编辑:admin)
 

关注奔三路小程序,方便你我他


Copyright © 2015-2017 bslxx.com  粤ICP备15056892号-1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mpvue的入门 的相关文章

  • Python os.path模块的使用

    Python os path模块的使用 Python的os模块是一个对接操作系统的模块 当我们需要对路径进行操作时 可以使用os path os path模块实现了很多处理长文件名 长路径名的函数 可以用来对路径切分 拼接 转换等 先导入o
  • Seata分布式事务失效踩坑记录

    在学习Seata过程中 偶然发现了一个坑 这里做个记录 环境说明 先说下我的环境 我是搭建了一个SpringCloud微服务 然后A服务调用B服务 然后在这两个服务都集成了Seata 集成过程是没有问题的 业务场景是注册场景 A服务中需要操
  • 01-java学习笔记【接口与抽象类】

    这些是我自己的理解加上网上优秀的分享总结出来的 抽象类是用来捕捉子类的通用特性的 它不能被实例化 只能被用作子类的超类 抽象类是被用来创建继承层级里子类的模板 接口是抽象方法的集合 如果一个类实现了某个接口 那么它就继承了这个接口的抽象方法

随机推荐

  • papers with code介绍(人工智能方向研究生的必备网站)

    paperswithcode介绍 人工智能方向的必备网站 本文将从两个部分介绍 一 正文 二 导航 A browse State of the Art B Datasets C Method D More 网站首页 一 正文 2 最上面是四
  • Python中RSA加密

    文章目录 RSA加密 一 概述 1 简介 2 签名 3 环境配置 二 算法实现 1 公钥和私钥 2 加密和解密 3 签名和解签 RSA加密 一 概述 1 简介 RSA是非对称的 也就是用来加密的密钥和用来解密的密钥不是同一个 和DES一样的
  • LCD背光控制芯片

    PWM信号可通过调整占空比来调节输出电压 可以使用PWM来控制LCD的背光 但CPU的pwm引脚驱动能力太弱 常外接一个背光芯片 rt9293就是这样的一个恒流升压转换器 Iled Vref Rset Vfb Duty 300mV Duty
  • 论文阅读_大语言模型_Llama2

    英文名称 Llama 2 Open Foundation and Fine Tuned Chat Models 中文名称 Llama 2 开源的基础模型和微调的聊天模型 文章 http arxiv org abs 2307 09288 代码
  • js怎样判断引用类型和值类型?

    1 typeof 输出的类型 console log typeof y undefined console log typeof 101 number console log typeof hello string console log
  • 如何使用logging生成日志

    GiantPandaCV导语 日志对程序执行情况的排查非常重要 通过日志文件 可以快速定位出现的问题 本文将简单介绍使用logging生成日志的方法 logging模块介绍 logging是python自带的包 一共有五个level deb
  • https 访问 iframe 的http

    最近做的项目要求https 嵌入http的项目 浏览器老是提示https不能访问http 为了满足需求 在本地项目中添加了nginx转发服务 将项目中的iframe 转发为https 再又nginx将https转发至http 满足需求了 n
  • 1. 经验累积分布函数

    为了说明经验累积分布函数 我们这里使用一个学生成绩的数据集 假设班有50名学生 这些学生刚刚进行了一个测试 这个测试的结果是以0 100的分数来体现的 我们要如何更好的可视化结果呢 例如确定成绩的最大值和最小值 对于这个数据的可视化 我们可
  • jar包修改并重新打包,jar包反编译使用工具以及修改代码方法

    jar包修改并重新打包 jar包反编译使用工具以及修改代码方法 备忘 https blog csdn net tomcat zhu article details 79240011
  • unity中的reflectionProbe的使用

    下面说一下Reflection Probe 大家都知道 当使用标准着色器时 每一个材质都会具有一定程度的镜面反射 specularity 和金属反射 metalness 属性 在没有强大的硬件来处理即时光迹追踪反射的情况下 我们得仰赖预先计
  • 8.bidirectional_recurrent_neural_network

    import torch import torch nn as nn import torchvision import torchvision transforms as transforms device torch device cu
  • 电源升降压芯片电路归纳(归纳中。。。)

    注 学习硬件做的总结 大神勿喷 有不足之处还望不吝赐教 目录 电源升压5v芯片归纳 PS7516电路 NCP1400ASN50电路 PL2628电路 FP6276B电路 PL2303电路 PS3120A电路 QX2301LXXE电路 电源升
  • Opencv快速入门教程,Python计算机视觉基础

    快速入门 OpenCV 是 Intel 开源计算机视觉库 它由一系列 C 函数和少量 C 类构成 实现了图像处理和计算机视觉方面的很多通用算法 OpenCV 拥有包括 300 多个 C 函数的跨平台的中 高层 API 它不依赖于其它的外部库
  • 用java解一元二次方程组

    System out print 求 ax 2 bx c 0的根 n Scanner in new Scanner System in 定义变量 while true System out println 请输入a的值 int a in n
  • RT-Thread开发GD32F450 添加adc外设

    开发板使用的是gd32f450zk env工具使用的版本是1 3 5 rtthread版本是5 0 0 添加adc外设的步骤如下 步骤1 查看开发板的电路原理图 确定adc的使用引脚 使用的是引脚PF6 即adc012 IN4 如下图 步骤
  • 设计模式:状态机模式

    首先状态机模式是处理一个类在内部状态改变的时候 其方法处理信息的模式也会改变 这里说一个在RTS游戏里的应用 有限状态机 我们要赋予每个战斗单位一个智能 比如一定范围内检测到地方单位 且自身处于游荡或者Patrol状态 那么就转换为攻击状态
  • [MAC各类右键菜单修改]Automator WorkFlow: 扩展右键菜单

    一 前 废 言 话 Automator是我最喜欢的OS X预装程序之一 能轻松以简单的拖拽创建一个工作流程 WorkFlow 也能用AppleScript和终端Shell辅助完成操作 这篇帖子主要分享我最近写的一些Automator工作流程
  • JAVA NIO 基础

    原文地址 http www iteye com topic 834447 1 基本 概念 IO 是主存和外部设备 硬盘 终端和网络等 拷贝数据的过程 IO 是操作系统的底层功能实现 底层通过 I O 指令进行完成 所有语言运行时系统提供执行
  • 六、ARP协议

    一 ARP 地址解析协议 Address Resolution Protocol 是将IP地址解析为MAC地址的协议 ARP没有IP封装 Type为0X0806 ARP不能穿越路由器 不能被转发到其他广播域 ARP分为 1 正向ARP IP
  • mpvue的入门

    奔三路学习网移动版 首页 vue面试通 前端面试通 大前端知识 挨踢职场 找前端工作 搜索 主页 gt vue面试通 gt 开源框架 gt mpvue菜鸟踩坑吃鸡篇一 时间 2018 04 25 11 46 来源 未知 作者 admin 点