美团小程序框架mpvue入门教程

本教程只针对新手,老鸟勿喷。

另外,我还专门为本文做了一个简单的项目,如果懒得从头开始搭项目的童鞋,可以直接去我的

github上克隆到本地,

安装一下依赖,即可直接在此基础在开发,不需要做任何配置。如果你觉得该项目对有帮助,

请顺便给我Star,你们的支持是我最大的动力,谢谢!

好了,我们进入主题,首先,请允许引用一下美团官方对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 代码转换编译成小程序目标代码的能力

开始

学习最好的方式就动手,我们就徒手撸一个demo项目出来跑一跑,看看到底有没有官方说的那么好。

如果你有过vue的开发经历,相信你会对这个过程非常熟悉,甚至你都不需要安装其他工具,

直接用vue-cli创建项目,如果你一起没安装过vue-cli,那么你要先运行一下命令

npm install --g vue-cli

安装完vue-cli以后,我们就可以运行一下命令,来自动构建一个项目(期间会询问你是否使用一些工具/插件,

请根据自己的实际情况选择y或n,对于不懂得该选y还是n的,统统选n)

vue init mpvue/mpvue-quickstart test-wxapp

然后 进入我们创建的项目,并安装依赖

cd test-wxapp

npm i

最后,在运行一下我们的开发服务

npm run dev

项目就跑起来了,这个时候,我们打开微信开发者工具,选择小程序,然后新建一个,项目目录填

我们项目目录下的dist目录 test-wxapp/dist,就可以看到效果了

进阶

到此为止,一个基本的项目就完成了,但是,本文的目的不是让你学会搭一个空项目的,空项目的话,我觉得官方教程做的已经够好了。

接下来,我们来删掉几个示例文件,然后一步步添加页面.

首先,我们看一下项目的配置文件 /src/main.js 里面的初始内容如下:

import Vue from 'vue'

import App from './App'

Vue.config.productionTip = false

App.mpType = 'app'

const app = new Vue(App)

app.$mount()

export default {

// 这个字段走 app.json

config: {

// 页面前带有 ^ 符号的,会被编译成首页,其他页面可以选填,我们会自动把 webpack entry 里面的入口页面加进去

pages: ['pages/logs/main', '^pages/index/main'],

window: {

backgroundTextStyle: 'light',

navigationBarBackgroundColor: '#fff',

navigationBarTitleText: 'title',

navigationBarTextStyle: 'black'

}

}

}

这里的 config 字段下面的内容,就是整个小程序的全局配置了,其中pages是页面的路由,window则是页面的一些配置(大部分都是顶部栏的配置)

,这些配置,最终都会被打包到原生小程序的app.json,对这些配置不了解的,建议看一下微信方法的小程序文档,这里不做赘述。

我们先把/src/pages 下面的counter和logs两个文件夹删掉,只保留一个index ,顺便把 /src/components 文件夹下面的文件也全删掉,

然后把/src/main.js 里面的 config.pages里面多余的路由也删掉,只保留一条['^pages/index/main'],这样目前就只有个index页面,

然后我们打开/src/pages/index/index.vue 我们把里面多余的代码删掉,只保留一个基础骨架

我是首页

export default {

data () {

return { }

},

methods: {},

created () {}

}

tip /src/utils/index.js 是一个公共函数库,里面只有一个简单的格式化日期函数,不要也可以删掉

到目前为止,一个干净的空项目就算是ok了,接下来我们来对微信原生的一些反人类的东西来做一下优化。

一、先用mptoast组件代替官方提供的wx.showToast, wx.showToast诸多不便我就不说了,关键是还有坑

小程序基础库比较低的,不管你怎么设置,总是会在弹窗里面加一个钩钩,有时候我想弹出错误消息也是打钩,

严重误导用户,字数上还有限制有带icon的不能超过7个字,你说说,你说说 7个字够干嘛的,

那我们来看看mptoast,据官方介绍mptoast具有轻量,配置少,冗余少,使用简单,可定制性强等特点

我们开根据官方介绍,从npm引入并配置

npm i vuex

npm i mptoast -D

在项目的主配置文件(一般位于src/main.js)加入以下代码

import mpvueToastRegistry from 'mptoast/registry'

mpvueToastRegistry(Vue)

在你需要弹窗的页面,引入组件,并注册,然后在页面内加入一个你注册的组件,就可以在js里面调用this.$mptoast()了, 以下是一个简单的实例

import mptoast from 'mptoast'

export default {

components: {

mptoast

},

data () {

return {}

},

methods: {

showToast () {

this.$mptoast('我是提示信息')

},

}

}

使用起来还是蛮简单的

二,用promise封装异步请求函数

在小程序的环境下面,要想发送一个外部请求,我们只能使用小程序官方提供的wx.request方法,

但是该方法的代码风跟跟Jquery年代的Ajax一样,都散靠回调来处理请求响应,如果有很多层回调,

就会有很多层嵌套,这让我们这些平时被async-await惯坏的人怎么接受?

所以,建完基本项目,我们要做的第一件事,就是用wx.request自己封装一个基于promise的异步请求方法。

我们先来看一下 wx.request的一个官方示例代码

wx.request({

url: 'test.php', //仅为示例,并非真实的接口地址

data: {

x: '' ,

y: ''

},

header: {

'content-type': 'application/json' // 默认值

},

success: function(res) {

console.log(res.data)

}

})

可以看到,每次请求都要发送一大堆的东西,重点少这些东西里面,很可能对于一个项目来说,

绝大部分都是固定不变的,那这样,不是冗余了么。

tip: 更多wx.request参数,请参考 微信官方文档

我们分析一下,第一个参数是url,也就是我们请求的地址,这个应该是每次都不一样的,但是,不一样的应该也只是url的最后一部分,

接口名称的位置不一样,前面的服务器地址一般都是一样的,例如http://www.abc.com/api/member/login 对于同一个项目的所有接口

服务器地址http://www.abc.com/api/应该都是一样的,不一样的只是后面的接口名称member/login,

那我们可以把url拆分成 服务器地址 + 接口名称,这样做也方便后期上线的时候,切换服务器地址。

第二个参数是请求的参数,请求的参数应该是每次都不一样的,所以这个我们就不做修改(事实上实际应用中,

经常有可能出现需要每个接口都带一个token的,我们也可以在这里统一加上去,不过这里就不做深入)

第三个参数是 请求头,这个一般同一个项目里面,这些都是一样的,所以我们就写死。 这里还有一个参数method请求方法,

这里因为使用默认值GET,所以就没列出,我们这边需要做设置,因为现在前后分离的模式,现在基本上大部分都是POST请求,所以我们这边也写死成method:'POST'

最后一个就是处理请求结果回调函数,示例里面只有一个请求成功的回调,其实我们应该再加一个请求实例的处理函数,

fail,而我们封装这个函数的重点,就是要用promise来处理这两个回调函数,使它们可以用async-await的语法

// 假设以下代码在 `/src/utils/requestMethod.js`

let serverPath = 'http://www.abc.com/api/'

export function post(url,body) {

return new Promise((resolve,reject) => {

wx.request({

url: serverPath + url // 拼接完整的url

data: body

method:'POST',

header: {

'content-type': 'application/json'

},

success(res) {

resolve(res.data) // 把返回的数据传出去

},

fail(ret) {

reject(ret) // 把错误信息传出去

}

})

})

}

有了这样的封装,我们就可以在其他地方引入 上面这个文件,然后使用post函数请求

import {post} from '/src/utils/requestMethod.js'

// 需要注意的是,这行代码必须要在async修饰的函数里面才能正确调用

let res = await post('member/login',{name:myname})

如果你觉得每次都要import这个文件很麻烦,那我们也可以把它挂在到Vue(mpvue)的原型(prototype)上,我们打开/src/main.js文件,然后在里面加入以下代码

import {post} from '/src/utils/requestMethod.js'

Vue.prototype.$post = post

这样,我们就可以在Vue(mpvue)的所有实例里面,直接使用 this.$post()来调用,只要一行代码,

// 这行代码同样需要在async修饰的函数里面才能正确调用

let res = await this.$post('member/login',{name:myname})

怎么样?是不是比原生的方便很多呢?

vue 美团框架_美团小程序框架mpvue入门教程相关推荐

  1. 基于Vue实现一个简易的小程序框架,浅谈kafka | 每日掘金第 194 期

    Hello,又到了每天一次的下午茶时间.酱酱们的下午茶新增优质作者介绍和码上掘金板块,专注于发掘站内优质创作者和优质内容,欢迎大家多提宝贵意见! 酱酱们的下午茶全新改版,欢迎大家多提宝贵意见! 本文字 ...

  2. 微信小程序使用WeUI入门教程

    微信小程序使用WeUI入门教程 在学习微信小程序过程中,很多组件的样式需要自己调整,且很多不是我们想要的样子.所以找到了WeUI这样的扩展组件库,预览了组件库,真的非常nice! 但是找不到怎么去引用 ...

  3. mpvue微信小程序动画_微信小程序框架之mpvue(入门教程)

    本文章主要用于接触一段时间的微信小程序的开发者或者开发团队,当然,今天主要给大家分享一下,近期研究的mpvue,属于美团小程序框架,本期主要做基础的安装及配置说明,好了,我们首先还是简单了解一下mpv ...

  4. java实现计算器框架_[Java小程序] 实现简单计算器

    这学期没事学了一点点Java,想写个程序练手,因为只学了一点点,所以暂时只能先写个实现简单功能的计算器练练.感觉写完后不是很好,如果路过的哪位高手给点建议,小弟万分感激啊. 由于期末来了,没太多时间, ...

  5. 小程序和vue语法对比_商城小程序对比传统电商的优势如何?

    自移动互联网兴起后,许多企业都将自己的业务重心转移到移动端.目前,小程序发展异常火爆,大家都争先恐后,通过长沙小程序开发,来布局自己的商城小程序.不过由于小程序发展较短,许多企业对此不甚了解.那么接下 ...

  6. vue获取麦克风_微信小程序实现录音时的麦克风动画效果实例

    前言 这个简单的麦克风demo的创意是来源于"包你说"中的录音效果,实现的方式其实也并不难,但对于小程序中的简易动画的使用的确很实用. 效果 先来看个demo,gif帧数比较低,实 ...

  7. ebs开发入门 oracle 知乎_微信小程序云开发入门第一篇---开发准备事项

    在开始本文的正式内容之前,先允许我做一个简单的自我介绍,我是一名嵌入式软件开发人员,目前在一家音视频处理芯片公司做linux系统下音视频开发的相关工作,算是嵌入式软件开发行业的老人了,如果您对嵌入式行 ...

  8. android开发小项目实例_微信小程序开发的实例教程

    一.注册小程序帐户 1.进入微信公众平台,注册一个小程序帐号,并根据提示填写相应的信息. 2.成功注册后,进入主页,然后在小程序发布过程->小程序开发和管理->配置服务器中单击" ...

  9. 微信小程序保姆级入门教程

    一.微信小程序特点 -小程序依赖微信 快,因为免去下载和安装 小,一个包不能超过2M 强,微信有什么能力它也拥有 广,传播微信圈子近10亿用户 QQ 微信 支付宝 字节跳动 美团 鸿蒙 都有类似小程序 ...

  10. 微信小程序weui在线入门教程-WeUi操作反馈-actionsheet弹出式菜单

    效果图 微信小程序交流群:111733917 | 微信小程序从0基础到就业的课程:https://edu.csdn.net/topic/huangjuhua wxml代码 <view class ...

最新文章

  1. hdu4169_Wealthy Family_树形DP(2011美国区域赛)
  2. 杨建:网站加速--内容简介
  3. mysql使用索引下推的好处_mysql的索引下推理解和实践
  4. Pool construction UVA - 1515 最小割模型
  5. ASP.NET 5 Beta7发布
  6. R中根据匹配原则将一列拆分为几列的方法
  7. 【Spring】Spring Bean 定义继承
  8. ssh之雇员管理系统(4)-改进的hibernate测试
  9. Redux入门教程(快速上手)_day_01
  10. java汉字的编码_Java中文编码小结
  11. torch.optim 中的优化器
  12. 儿童护眼灯哪个品牌最好?儿童护眼灯十大排行榜
  13. 苹果6换屏多钱_iPhone12系列屏幕维修价格公布 苹果12换屏多少钱
  14. 禁用计算机的声卡设备,电脑声音被禁用了怎么办
  15. 联发科p60和骁龙710哪个好_骁龙710、麒麟710和联发科P60哪个好 性能对比测试 (全文)...
  16. 计算机excel2010知识点,Excel-模拟分析和图表知识点讲解-计算机二级Office
  17. webRTC(六):webrtc信令服务器实现
  18. 果链“围城”:傍上苹果,是一场甜蜜与苦楚交错的旅途
  19. [apidoc]Apidoc-文档生成工具
  20. 得胜php100怎么样,口碑评测得胜Q麦评测如何?怎么样呢?评测爆料真心话

热门文章

  1. 直播进场特效设置解决方案
  2. python加换行和去换行(去掉换行,end =““;加换行 ,‘/n‘)
  3. C++实现 L1-021 重要的话说三遍 (5分)
  4. 15.2 矩阵链乘法
  5. 机械硬盘选购指南——从选购经历谈起
  6. vue 绑定 keyup.enter 绑定回车键盘事件 enter键防止页面刷新
  7. 什么是系统架构师,系统架构师应具备哪些能力?
  8. annoconda 创建虚拟环境 删除虚拟环境
  9. 快速实现抖音的分享登录(android) 1
  10. 学习篇 | 浮点数的表示规则