一、写在前面:

.....最近在写一个微信小程序项目,在看完官方微信小程序开发文档后,有一种直接想“放弃”的念头;

.....使用微信小程序原生框架可以快速,方便,简洁的搭建项目,同时微信提供了新的一套‘语义化’标记语言wxml,以及独立出来的wxss样式表,并且js的交互逻辑支持ES6的语法,包括使用Promise等;除去框架本身之外,小程序还提供了一些常用的组件,包括Picker,slider,canvas,form表单等,能极大的提高开发者的效率,丰富的API完全能满足工作需求,如果你在没有接触类似 VUE 等MVVM主流前端框架之前,微信小程序原生框架无疑是最佳选择;

......但是,使用过vue后,你会发现小程序原生框架的数据绑定方式非常“臃肿”,代码编写不优雅简洁,语义化标签以及丰富的属性设置会大大增加学习成本,另一方面微信小程序开发者工具的IDE表现也总是差强人意,反应迟钝,wxml,wxss,js之间来回切换不流畅,导致开发效率低下......

......由于以上种种,我开始寻找新的框架编写小程序项目,首先找到的框架是圈内较热门的wepy,其次就是最近才发布的mpvue;


简介

......wepy 是腾讯开源的一套语法接近vue.js,快速开发小程序的框架,开源的较早,网上有很多资源,也有一些大厂使用。可想而知,原生小程序框架在设计上还是有一定的缺陷

......mpvue也就是今天要介绍的主角,是美团开源的一套快速开发小程序的前端框架,__按官网说可以实现小程序与H5界面使用一套代码,mpvue 继承自 Vue.js。并且,其技术规范和语法特点与 Vue.js 保持一致。对毫无小程序开发经验的同学来说无疑是大大的福利。mpvue官网


二、优势比较

值得注意的是,mpvue提供vuex进行数据状态管理,能满足复杂应用状态管理需求,这是其他框架都不具备的!

三、新建项目

  1. 通过 Vue.js 命令行工具 vue-cli,你只需在终端窗口输入几条简单命令,即可快速创建和启动一个带热重载、保存时静态检查、内置代码构建功能的小程序项目
  2. 创建完之后,在命令行执行:

    npm run dev

    编译成功后,用微信开发者工具打开webpack打包后的dist文件,即可进行开发了;
  3. 项目文件结构:


小提示:

安装mpvue项目利用vue-cli脚手架工具,选择了对应的mpvue的模板,在安装过程中,cli脚手架工具会提醒您是否需要安装Vuex,,我建议您根据项目需求确认是否添加该配置,因为这里安装Vuex,工具根据vue模板会帮你自动搭建依赖关系并且转义后兼容小程序,如果您想在项目开发中添加Vux就要注意了,在安装过程中极有可能报错,由于mpvue开源时间较短,参考资料也很有限,为了避免不必要的麻烦,建议在搭建项目时就安装Vuex。

四、生命周期比较

vue生命周期

  • beforeCreate————————在实例初始化之后,数据观测事件配置之前被调用
  • created ————————在实例创建完成后被立即调用
  • beforeMount ————————在挂载开始之前被调用
  • mounted ————————el 被新创建的 vm.$el 替换挂载到实例上去之后调用该钩子
  • beforeUpdate
  • updated
  • activated ————————keep-alive 组件激活时调用。
  • deactivated
  • beforeDestroy
  • destroyed

    注意:vue的create,mounted等生命周期钩子函数只执行一次,当组件创建并被挂载到DOM上以后,就不会执行了;

小程序生命周期

app 部分:

  • onLaunch,初始化
  • onShow,当小程序启动,或从后台进入前台显示
  • onHide,当小程序从前台进入后台

page 部分:

  • onLoad,监听页面加载
  • onShow,监听页面显示
  • onReady,监听页面初次渲染完成
  • onHide,监听页面隐藏
  • onUnload,监听页面卸载
  • onPullDownRefresh,监听用户下拉动作
  • onReachBottom,页面上拉触底事件的处理函数
  • onShareAppMessage,用户点击右上角分享
  • onPageScroll,页面滚动
  • onTabItemTap, 当前是 tab 页时,点击 tab 时触发 (mpvue 0.0.16 支持)

这是生命周期的调用关系和顺序图。

五、使用总结

(1)生命周期钩子函数

mpvue团队建议开发者在mpvue中尽可能的不使用小程序的生命周期,实际工作中使用小程序的生命周期钩子函数也无大碍,有的程序员为了减少页面初始化时尽快的请求到服务器端的数据,故意将ajax请求写在onShow钩子函数里,而不是vue 的 mounted函数里;



我们来看看这样一个需求,下图所示的页面

(2)路由

在mpvue中没有继续延用vue路由的写法,而是继承小程序的一套解决方案,在工作中我们经常通过路由来传递参数,比如下面代码所示:

//在index页面,我们想跳转到apply页面,并传递id参数

let id = 10
const url = '/pages/apply/main?id=' + id
wx.navigateTo({ url})

小程序方法获取id

// 在apply.vue页面中
onLoad (options) {
let id = options.id
}
//注意:必须是在onLoad钩子函数往后的生命周期中获取
onShow (options) {
let id = options.id
}

mpvue-编写微信小程序总结的更多相关文章

  1. mpvue体验微信小程序开发

    微信小程序 https://developers.weixin.qq.com/miniprogram/introduction/index.html?t=18082114 微信小程序是一种全新的连接用 ...

  2. mpvue开发微信小程序,分享按钮报错:`Cannot read property 'apply' of null`

    用mpvue开发微信小程序,分享按钮报错:Cannot read property 'apply' of null onShareAppMessage 是于微信小程序Pages的生命周期钩子,顾这个方 ...

  3. 使用mpvue开发微信小程序

    更多内容请查看 我的新博客 地址 : 前言 16年小程序刚出来的时候,就准备花点时间去学学.无奈现实中手上项目太多,一个接着一个,而且也没有开发小程序的需求,所以就一拖再拖. 直到上周,终于有一个小程 ...

  4. 用mpvue构建微信小程序

    背景 由于机器人协会进行鼓励大家多读书的活动,所以为了可以更好的.更有效果,所以我跟会长提了一个建议,做一个微信小程序,那么为什么是微信小程序呢? 1.现在微信小程序比较好,用户也比较多:利用微信小程 ...

  5. 高效编写微信小程序

    原文:https://isux.tencent.com/high-performance-wechat-app-development.html 前言 微信小程序是一个工程,就和盖房子一样,打好了地基 ...

  6. 利用mpvue开发微信小程序

    最近公司部门负责人提出需求需要开发一款微信小程序,由于本人之前是做前端开发的,对于小程序开发一窍不通,但是很多时候我们都是把不会做变成我会学.于是便在网上寻找小程序开发教程,相比于相生的小程序开发,本 ...

  7. mpvue开发微信小程序

    前段时间,美团开源了mpvue这个项目,使得我们又多了一种用来开发小程序的框架选项.由于mpvue框架是完全基于Vue框架的(重写了其runtime和compiler),因此在用法上面是高度和Vue一 ...

  8. 【微信小程序】使用vscode编写微信小程序项目

    1. 在微信开发者工具(以下简称:开发者)中新建一个模板微信小程序 2. 在开发者中将模拟器分隔开 3. 设置在保存时编译 4. 在vscode中打开项目目录 5. 下载代码提示插件 这样就可以在vs ...

  9. mpvue实现微信小程序(欢迎踩坑)

    最近刚使用mpvue完成了微信小程序的开发,写点东西,做个记录. 首先依旧是两个传送门: 微信小程序文档:[https://developers.weixin.qq.com/miniprogram/d ...

  10. mpvue开发微信小程序之时间+日期选择器

    最近在做微信小程序,技术栈为mpvue+iview weapp组件库. 因项目需求,要用到日期+时间选择器,iview组件库目前还未提供时间日期选择器的组件,小程序官方组件日期时间也是分开的,在简书上 ...

随机推荐

  1. Zip操作的工具类

     /** * Copyright 2002-2010 the original author is huanghe. */package com.ucap.web.cm.webapp.util; ...

  2. OpenCV——PS 滤镜, 曝光过度

    算法原理可以参考: PS 滤镜,曝光过度 #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include <io ...

  3. 面试之路(6)-BAT面试之操作系统内存详解

    本文主要参考两篇博客,读后整理出来,以供大家阅读,链接如下: http://blog.jobbole.com/95499/?hmsr=toutiao.io&utm_medium=toutiao ...

  4. Django(一)入门基础——hello world

    环境配置 windows7 python3.6 Django 2.0 PyCharm 2018.1 专业版(PS:不建议社区版,因为被"阉割"了很多功能,比如cmd的Termina ...

  5. ORACLE 博客文章目录

    从接触ORACLE到深入学习,已有好几年了,虽然写的博客不多,质量也参差不齐,但是,它却是成长的历程的点点滴滴的一个见证,见证了我在这条路上的寻寻觅觅,朝圣的心路历程,现在将ORACLE方面的博客整理 ...

  6. TypeScript 的声明文件的使用与编写

    https://fenying.net/2016/09/19/typings-for-typescript/ TypeScript 是 JavaScript 的超集,相比 JavaScript,其最关 ...

  7. Roundcube Webmail File Disclosure Vulnerability(CVE-2017-16651)

    Preface Software: https://roundcube.net/ Versions: 1.1.0 - 1.1.9, 1.2.0 - 1.2.6, 1.3.0 - 1.3.2 CVE: ...

  8. Scala编程入门---函数过程,Lazy值和异常

    过程: 在Scala中,定义函数时,如果函数体直接包裹在花括号里面,而没有使用=连接,则函数的返回值类型就是Unit.这样的函数就被称之为过程. 过程通常用于不需要返回值类型的函数. 过程还有一种写法 ...

  9. C++开发中BYTE类型数组转为对应的字符串

    下午密码键盘返回了一个校验码,是BYTE类型数组,给上层应用返回最好是字符串方式,怎样原样的将BYTE数组转为string串呢?不多说,开动脑筋上手干!!! BYTE格式的数组bt{08,D7,B4, ...

  10. 爬虫之proxy(代理)

    proxy简介 proxy即为代理,我们爬虫的时候肯定会有频繁访问某一网站的情况,这个时候有些服务器会识别到我们是非正常访问,就会把我们的IP禁掉,这个时候就需要用代理了. 就好比现实生活中,我需要向 ...