介绍前端
mpvue (github 地址请参见)是一个使用 Vue.js 开发小程序的前端框架。框架基于 Vue.js 核心,mpvue 修改了
Vue.js 的 runtime 和 compiler 实现,使其能够运行在小程序环境中,从而为小程序开发引入了整套 Vue.js
开发体验。 总之就是用vue的开发方法来开发小程序,对没使用太小程序,可是会用vue的开发者来讲十分友好
建立项目vue
就按照官网上这几行代码,就能够建立一个mpvue项目了。下载开发者工具,导入项目,填入appid,一个mpvue小程序就建立成功了
是否是很简单(* ̄︶ ̄)git
建立页面github
目录大概是这样
pages文件夹下面的每一个子文件夹是一个页面,建立新页面时,须要vuex
每次新增页面都须要重启项目npm
使用less
安装less cnpm install less less-loader --save-dev
页面的style标签加上lang='less'json
引入图片
图片和样式的静态文件放在static文件夹下小程序
<img src="/static/img/location.png" /> // 图片用绝对路径
请求封装
使用flyio,具体参考flyio封装segmentfault
弹出层
小程序使用原生的弹出层
美团小程序框架mpvue入门教程 这篇文章中的封装的mptoast在某个iphone se上有不兼容的问题,因此改为的原生的弹出层前端框架
路由携带信息
小程序没有vue的路由机制,因此只有使用小程序原生的页面跳转,在起始页面url地址里面拼接参数,在目的页面的onLoad 或以后的生命周期
经过this.$root.$mp.query可获取到页面参数
// 起始页面 wx.navigateTo({ // 目的页面地址 url: '../detail/main?id=' + xx.id + '&type=random', // 地址就是app.json里面的 success: function (res) { console.log(res) } }) // 目的页面 onLoad () { console.log('detail', this.$root.$mp.query) }
使用vuex
mpvue使用vuex跟在vue里面使用vuex是同样的
在src文件夹下新建一个store文件夹,分别有这几个js文件,主要是后面三个文件
index.js
import Vue from 'vue' import Vuex from 'vuex' import mutations from './mutations' import actions from './action' import getters from './getters' Vue.use(Vuex) const state = { username: '', // 自定义要改变的变量 } export default new Vuex.Store({ state, getters, actions, mutations })
mutation-types.js
export const SET_USERNAME = 'SET_USERNAME' // 自定义改变全局变量的方法名字
mutations.js
import { SET_USERNAME, // 引入全局变量的方法名 } from './mutation-types.js' export default { [SET_USERNAME] (state, obj) { state.username = obj // 改变全局变量的具体方法 } }
main.js 引入
在src文件夹下的main.js
// 全局状态管理 import store from './store/index' Vue.prototype.$store = store
如今开始具体在页面里面使用这个变量
userinfo.vue 子页面
<div @click='changeusername'>改变名字</div> // 用vue的方式绑定方法
import {mapMutations, mapState} from 'vuex' // 引入全局变量的方法和状态
computed: { ...mapState(['username']) // 在本页面可使用定义的全局变量username了 }
methods: { ...mapMutations(['SET_USERNAME']), // 声明有这个方法 changeusername () { this.SET_USERNAME('小明') // username这个变量值已经变了,在其余页面获取到的这个变量值也变了 } }
分享
// 特定分享某个页面 <button class="" open-type="share">邀请好友</button>
onShareAppMessage: function (res) { console.log(res) var title = 'xxxxxx' var path = 'pages/index/main' // 页面右上角的分享路径 var imageUrl = '/static/img/success.png' if (res.from === 'button') { // 点击某个按钮的分享路径 path = 'pages/success-detail/main?id=' + xx.id // 路径可携带参数 } return { title, path, imageUrl, success: (res) => { console.log('res', res) }, fail: (res) => { console.log('res', res) } } }
formId 发送模板消息
在点击事件里面嵌套这个表单提交方法
<form @submit="createFormId" report-submit='true'> <button form-type="submit" class="hidebtn">肯定</button> </form>
createFormId (e) { // 产生form_id console.log(e.target.formId) if (e.target.formId !== '' && e.target.formId !== 'the formId is a mock one') { // 存储formId 须要的时候传到后台 } }
打包
运行 npm run build
打包
若是打包以后运行错误 提示 小程序始终提示查找不到‘app.json’文件
参考小程序始终提示查找不到‘app.json’文件
若是没有错就能够发布上传了
持续更新...