使用mpvue开发微信小程序
前言
16年小程序刚出来的时候,就准备花点时间去学学。无奈现实中手上项目太多,一个接着一个,而且也没有开发小程序的需求,所以就一拖再拖。
直到上周,终于有一个小程序的项目。如果现在学小程序,时间上肯定来不及了(就给了一周的时间)。正好前段时间看到美团开源了一个使用vue来开发微信小程序的框架 mpvue。因为平时vue用的多,所以就决定使用 mpvue 来开发。
mpvue 介绍
我们看一下mpvue官网上的介绍:
mpvue 是一个使用 Vue.js 开发小程序的前端框架。框架基于 Vue.js 核心,mpvue 修改了 Vue.js 的 runtime 和 compiler 实现,使其可以运行在小程序环境中,从而为小程序开发引入了整套 Vue.js 开发体验。
mpvue 优势
- 彻底的组件化开发能力:提高代码复用性
- 完整的 Vue.js 开发体验
- 方便的 Vuex 数据管理方案:方便构建复杂应用
- 快捷的 webpack 构建机制:自定义构建策略、开发阶段 hotReload
- 支持使用 npm 外部依赖
- 使用 Vue.js 命令行工具 vue-cli 快速初始化项目
- H5 代码转换编译成小程序目标代码的能力
开发过程
通过 Vue.js 命令行工具 vue-cli,你只需在终端窗口输入几条简单命令,即可快速创建和启动一个带热重载、保存时静态检查、内置代码构建功能的小程序项目:
# 创建一个基于 mpvue-quickstart 模板的新项目
$ vue init mpvue/mpvue-quickstart my-project
# 安装依赖
$ cd my-project
$ npm install
# 启动构建
$ npm run dev
接下来,你只需要启动微信开发者工具,引入项目即可预览到你的第一个 mpvue 小程序。
下面是一个项目目录结构。

和开发vue完全一样,不过需要注意的是,小程序不支持dom操作,所以vue中的 ref 也不能使用。
其它基础可以看mpvue官网,上面有详细的使用说明。下面主要说一个在开发过程中遇到的坑。
mpvue开发中遇到的问题
1.路由跳转
vue中 使用 vue-router 来进行路由跳转的。mpvue中只需要用 a 标签就行了。
<a href="/page/counter/main?text=123">
同时也可以使用小程序自身提供的api完成页面跳转
wx.navigateTo({
url: `/pages/counter/main?text=${this.text}`
});
2.input框光标位置
在input输入框内输入内容时,当我想修改前面已经输入好的文字,把光标移动到需要修改的位置。
修改完之后,光标自动跑到最后了,这样给用户体验不好。
<input type="text" v-model="text">
可以使用 v-model.lazy 但是 lazy 在输入框失去焦点时才能触发。可以使用setTimeout来延迟执行。
<input type="text" v-model.lazy="text">
setTimeout(() => {
...
let ipt = this.text;
...
},100)
这样就能解决了。
3.弹出层滚动穿透
写了一个简单的弹窗,发现滚动弹出层里的内容,后面的内容也跟着滚动。开始以为阻止冒泡就行了。结果试了一下,还是不行。在 issues 里看到别人提供的解决办法,试了一下,可以用。
<scroll-view :scroll-y="scroll" style="height:200px" scroll-with-animation="true">
.....
<-- 弹出层 -->
<div class="layer">
....
</div>
</scroll-view>
点击弹窗按钮时,把 scroll 设置为 false。 点击关闭按钮时,再把 scroll 设置为true 。同时设置body的样式
body{
overflow-y: hidden;
height: 100%;
}
4.引入echarts 打包后文件过大
项目中需要引入echarts,直接引入后,打包完体积超过 2M了,没办法提交。echarts提供的有精简版本,我们可以导入精简的版本。
import echarts from "echarts/dist/echarts.simple.min";
import mpvueEcharts from "mpvue-echarts";
具体的 echarts 使用,请看文档,有详细的介绍。
5.页面加载生命周期
当从一个页面跳转到另一个页面时,我们在新页面不能使用created来初始化获取接口返回的内容。
因为小程序首次加载会把所以页面的created都执行。
我们可以使用下面方法
async onLoad() {
....
}
结束语
如果之前使用过vue,那么使用mpvue来开发小程序上手非常快,基本上可以无缝对接。
mpvue目前还是有坑的,不过后面迭代的版本功能会越来越完善。
使用mpvue开发微信小程序的更多相关文章
- mpvue开发微信小程序,分享按钮报错:`Cannot read property 'apply' of null`
用mpvue开发微信小程序,分享按钮报错:Cannot read property 'apply' of null onShareAppMessage 是于微信小程序Pages的生命周期钩子,顾这个方 ...
- 利用mpvue开发微信小程序
最近公司部门负责人提出需求需要开发一款微信小程序,由于本人之前是做前端开发的,对于小程序开发一窍不通,但是很多时候我们都是把不会做变成我会学.于是便在网上寻找小程序开发教程,相比于相生的小程序开发,本 ...
- mpvue开发微信小程序
前段时间,美团开源了mpvue这个项目,使得我们又多了一种用来开发小程序的框架选项.由于mpvue框架是完全基于Vue框架的(重写了其runtime和compiler),因此在用法上面是高度和Vue一 ...
- mpvue开发微信小程序之时间+日期选择器
最近在做微信小程序,技术栈为mpvue+iview weapp组件库. 因项目需求,要用到日期+时间选择器,iview组件库目前还未提供时间日期选择器的组件,小程序官方组件日期时间也是分开的,在简书上 ...
- mpvue 开发微信小程序搭建项目
首先 mpvue 是一款基于vue的框架,mpvue 修改了 Vue.js 的 runtime 和 compile 实现,可以运行在小程序的环境中. 第一步:安装 vue-cli vue-cli是vu ...
- mpvue开发微信小程序之picker
微信使用picker组件,bingchange 换成@change即可使用监听函数和方法 此处注意与微信多了一个mp的信息才能获取到选中的值. 获取当前日期+时间 function formatTim ...
- mpvue 应用 Vant Weapp框架开发微信小程序
今天在使用mpvue开发微信小程序的过程中需要实现一个底部上拉选择列表的功能,因为之前做过H5微信公众号的开发,使用的就是有赞的Vant-ui,所以第一时间就想到了有赞的Vant Weapp UI框架 ...
- 用Vue.js开发微信小程序:开源框架mpvue解析
前言 mpvue 是一款使用 Vue.js 开发微信小程序的前端框架.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为 H5 和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程 ...
- mpvue体验微信小程序开发
微信小程序 https://developers.weixin.qq.com/miniprogram/introduction/index.html?t=18082114 微信小程序是一种全新的连接用 ...
随机推荐
- 02-Git简单使用
Git安装(windows) https://code.google.com/p/msysgit/downloads/list 我们使用版本Git-1.7.9版本 百度网盘下载:链接:http://p ...
- [GitHub]第三讲:简单分支操作
Git 最核心的操作对象是版本( commit ),最核心的操作技巧就是分支. 什么是分支? 仓库创建后,一旦有了新 commit,默认就会放到一个分支上,名字叫 master.前面咱们一直看到的多个 ...
- Web Service进阶(六)SOAPBinding绑定方式异常 is not found. Have you run APT to generate them
当在类中填充相应方法时,提示如下错误: 出现以上错误的原因就是在注解中没有添加@SOAPBinding(style=SOAPBinding.Style.RPC)这句话.估计也与JDK的版本相关,这方面 ...
- C++实现最小堆及插入,调整顺序,删除堆顶元素的操作
上次用Java实现了最大堆的封装,这次就来写一下最小堆的实现吧 插入函数的思路: 向堆中插入元素有两种情况,一种是堆为空,那么就让插入值作为根节点即可:另一种是堆不为空,那么此时就要进行判断当前节点与 ...
- leetcode 20 Valid Parentheses 括号匹配
Given a string containing just the characters '(', ')', '{', '}', '[' and']', determine if the input ...
- Android指南针之加速度传感器地磁传感器-android学习之旅(67)
由于andorid不推荐用传统的方向传感器,推荐用加速度传感器和地磁传感器来构造得到方向传感器的数据,其实主要是z轴的旋转角度 具体代码示例 代码如下 public class MainActivit ...
- 一键安装gitlab7在rehl6.4上
一键安装gitlab7在rehl6.4上 参考原文: http://blog.csdn.net/ubuntu64fan/article/details/38367579 1 关于gitlab7 无论如 ...
- 【uWSGI】 listen queue of socket (fd: 3) 错误分析
现在django的应用基本都是使用uWSGI来部署,类似下面 listen queue of socket "127.0.0.1:9001" (fd: 3) 的错误出现过2次,下面 ...
- 关于post利用之Python
今天大师兄放出了自己用PHP写的KTV点歌系统,注明,欢迎调戏,于是乎就尝试了下. 地址就不上了,到现在没补漏洞,我可不想被大师兄K…… 首先试试JavaScript脚本能否恶搞下 来个最基础的警告框 ...
- VS2005宏无法运行的问题(打了补丁MS14-009之后)
VS2005宏无法运行的问题(打了补丁MS14-009之后) 部门很多同事都是使用VS的宏来给源文件添加文件头,给函数.类添加注释等等,大概是14年2月份之后(根据lucifer提供的时间),这些宏突 ...