mpvue 新手踩坑记(一)
mpvue具体情况可以看github上面的官方文档:mpvue文档
下面说说我当前开发过程中遇到的问题
页面配置
mpvue的默认页面需要一个xx.vue单页面组件,同时配合上一个main.js文件,也就是说每新建一个页面都需要这样两个文件,而且main.js中的东西基本重复,显得比较冗余
这里推荐一个第三方的插件:mpvue-entry
该插件使得我们新建页面时只需要一个xx.vue文件,并且将页面路由通过一个js文件统一配置(符合vue开发的习惯),不用再放置在main.js中了
路由转跳
因为小程序与vue的路由机制的差异,所以我们没法使用vue-router来实现路由转跳(因为vue页面转跳后,之前的页面会销毁;小程序在页面转跳后,之前的页面不会被销毁,而是转入后台;)
如果你需要使用类似vue的api来实现(可能有些项目想将已有vue代码直接编译成小程序)
这里推荐一个第三方插件:mpvue-router-patch
不过这个插件只是封装了基本的用法,如果想要使用场景比较复杂可能需要自己封装。
使用了这个插件以后就更接近vue的路由机制,而且个人认为很好用。
生命周期钩子
因为小程序的历史页面不会销毁,所以在生命周期的使用中有需要注意的点
created:这个钩子是有bug的,所有页面的created函数会在项目加载的时候被一起调用,而且进入页面的时候不会在被调用,所以这个函数基本就不能使用了,用小程序的onLoad钩子代替吧
mounted:你如果从页面B返回页面A,页面A的mounted钩子不会被触发,因为页面没有被重新加载,如果有需要每次页面展示都要调用的逻辑,使用小程序的onShow代替吧
v-for
在mpvue中v-for一定要带有:key;双层循环时不能重复使用index,改个名字就好了
网络请求
和后端的数据交互,可以使用flyio这个插件,文档:flyio文档
拦截器:
开发过程中,经常会需要对请求进行拦截,做统一的处理
flyio一样可以使用拦截器:拦截器文档
以上是我现在使用mpvue遇到的问题和坑,欢迎讨论。