前面同志分享的步骤和现阶段有些差异:本人现阶段学习的是v 2.0.0
文档:http://mpvue.com/mpvue/quickstart.html
mpvue是美团点评团队出品的小程序框架
传送门:https://www.jianshu.com/p/8f779950bfd9
WePY是由腾讯团队推出的小程序组件化开发框架
uni-app是一个使用vue.js开发所有前端应用的框架,开发者编写一套代码,可发布ios、android、H5以及各种小程序(微信、支付宝、百度、头条,钉钉、QQ)
传送门 https://uniapp.dcloud.io/
目录结构
类似于vue目录
- main.js+App.vue:这两个是入口文件,相当于原生小程序框架中的app.json和app.js的复合体
image.png
mian.js为入口文件
image.png
webpack需要修改的地方
传送门:http://mpvue.com/build/
小程序每个页面的配置和全局的配置有专门的json文件管理,全局的是app.json,每个页面时main.json
image.png
app.json文件
"pages":[
"pages/index/main" //路径为main.js,不是index.vue
]
main.js
import vue from 'vue'
import App from './index' //index.vue
const app=new vue(App)
app.$mount() //手动挂载
与vue的不同
跳转页面:
去往Vuex示例页面1
新增页面(新建文件的时候)需要npm run dev
注意:新增文件必须重新启动,编译器不会自动检测新加入的文件
mpvue的局限性
1.在模板中,动态插入html的v-html指令不可用
可以使用
2.在模板中,用于数据绑定的双括号{{}}中的表达式存在诸多限制
在vue本身模板内{{}},我们可以对绑定变量进行比较丰富的处理,比如:
- 可以调用methods下的函数:例如:
{{ formatMessage(msg) }}
- vue中如果变量是对象的话,也可以调用对象的成员方法
{{msg.trim().split(',').json('#')}}
- vue中可以使用过滤器来处理变量,最有用的场景算是格式化数据了
{{msg | format}}
以上这些mpvue中都不可以使用,只能使用简单的运算(+ - * % ! == ==== :> < [] .)
复杂的运算的替换方法为计算属性computed
3.在模板中,除事件监听外,其余地方都不能调用methods下的函数
在vue中,模板里调用methods部分定义的函数是非常常见的,比如下面这段代码,在v-if指令中调用getErrorNum()
{{errmsg}}
可是在mpvue里,就是不可用的! 因为小程序模板wxml里不支持这种函数调用,导致mpvue没有很好的方式转译过去。替代方法还是计算属性
4.在模板中,嵌套使用v-for,必须指定索引index
通常在vue模板中嵌套循环渲染数组的时候,一般是这个样子的
-
{{product.name}}
mpvue中
-
{{product.name}}
5.事件处理中注意点
在mpvue中,一般可以使用web的DOM事件名来绑定事件,mpvue会将web事件名映射成对应的小程序事件名,对应列表如下:
//左侧为web事件,右侧为小程序事件
click : tap
touchstart : touchstart
touchmove : touchmove
touchcancel : touchcancel
touchend : touchend
tap : tap
longtap longtap
input input
change :change
submit : submit
blur : blur
focus : focus
reset : reset
confirm confirm
columnchange: columnchange
linechange :linechange
error: error
scrolltoupper : scrolltoupper
scrolltolower :scrolltolower
scroll : scroll
除了上面的的之外,web表单组件/
当前消息:{{messages[selectedIndex]}}
其他注意事项:
在web vue开发中,通常使用vue-router来进行页面路由,但是在mpvue中使用标签和小程序原生api wx.navigateTo等来做路由功能,还有请求后端数据,vue中使用的axios,mpvue中使用wx.request等来进行