小程序使用mpvue框架无缝接入Vant Weapp组件库
有美团开源出的mpvue以其vue的语法和良好的开发效率再搭配上用户体验良好的UI组件无疑是定制化微信小程序的开发方式,然而由于mpvue是对微信原生开发的再次封装,这也为我们引入UI组件添加了不少麻烦,话不多说,接下来为大家展示引入vant-weapp的方法。
1、首先,我们需要有个mpvue的基础的项目文件骨架,即用mpvue初始化一个项目
# 全局安装 vue-cli
$ npm install --global vue-cli
# 创建一个基于 mpvue-quickstart 模板的新项目
$ vue init mpvue/mpvue-quickstart my-project
# 安装依赖
$ cd my-project
$ npm install
# 启动构建
$ npm run dev
2、其次,在微信开发者工具中新建项目,填入注册的appid和文件目录(敲黑板了这里要注意一点,文件目录是mpvue项目中下的dist目录),根目录中的dist目录实际上就是mpvue每次打包完成后(npm run build)的目录,所以里面的MINA文件结构就是微信小城小程序原生开发的文件结构;
3、接下来,我们需要用到vant-weapp开源项目中vant UI组件,所以要将vant-weapp下载下来,下来后将其项目下的dist文件全部都copy到我们需要用到原项目中(就是我们开始初始化的项目),为了方便管理,可以在根目录下的static下新建一个vant用于存放UI组件文件;
git clone https://github.com/youzan/vant-weapp.git

4、接下来就比较简单了,组件的具体用法可在官方文档中查看,我们只需要在我们需要使用组件的页面的配置json文件中引入我们需要的组件
以下是我的首页json配置
{
// 页面配置,即 page.json 的内容
navigationBarTitleText: '首页',
'usingComponents': {
'van-search': '/static/vant/search/index',
'van-row': '/static/vant/row/index',
'van-col': '/static/vant/col/index',
'van-tab': '/static/vant/tab/index',
'van-tabs': '/static/vant/tabs/index',
'van-cell': '/static/vant/cell/index',
'van-cell-group': '/static/vant/cell-group/index',
'van-radio': '/static/vant/radio/index',
'van-radio-group': '/static/vant/radio-group/index',
'van-field': '/static/vant/field/index',
'van-button': '/static/vant/button/index',
'van-card': '/static/vant/card/index',
'van-popup': '/static/vant/popup/index',
'van-icon': '/static/vant/icon/index',
'van-panel': '/static/vant/panel/index',
'van-action-sheet': '/static/vant/cell-group/index',
'van-switch-cell': '/static/vant/switch-cell/index',
'van-area': '/static/vant/area/index',
'van-dialog': '/static/vant/dialog/index'
}
}
4、将UI组件导入后可在项目册测试,在此之前为了让UI组件生效,我们需要将项目打包一下,即为我们需要打开终端,在项目的根目录下执行一遍(npm run build),这样vant的UI组件就会在页面中正常发挥作用了
注意事项
在vant-weapp的官方文档中的具体用法是使用wxml的语法,所以我们不能直接照搬使用
1、数据的绑定方式
原生小程序,在标签内绑定数据的方式
value="{{value}}"
由于我们使用的事mpvue,所以我们需要改成
v-bind:value="value"
//或者
:value="value"
2、事件的绑定方式
原生小程序使用方式
bind:click="onClick"
mpvue 使用方式
@click="onClick"
3、交互组件的引用
vant中像notify这种操作反馈类的组件都有两个引入,一是组件的引入,这个在main.json中引入;另一个是方法的引入,需要在vue文件中import引入,值得注意的是,这里的引入不能使用绝对路径,可以用类似于这样的相对路径。
import Notify from '@/../static/vant/notify/notify' //@是mpvue的一个别名,指向src目录
4、获取 event 事件对象中值
值得注意的是,mpvue中获取event值与原生小程序有所不同。举例:
onChange(event){ // 获取表单组件filed的值
console.log(event.mp.detail) // 注意加入mp
}
5、监听方式的变更
mpvue 里面无法使用@click-icon这样的监听名,因此如果 API 文档里面有出现这样的监听名,那么需要手动修改源代码。
可以改成驼峰式的监听名。
eg: 我在field组件中就遇到这个问题,我的做法是:
// static/vant/field/index.js
this.$emit('click-icon');
// 修改为:
this.$emit('clickIcon');
报错的处理方式
一般的报错报错都可以通过一下流程处理。
1、是否打开了微信开发者工具中的ES6转ES5功能。
2、仔细检查代码和比对文档,看看是否有使用不当的地方。
3、重新编译npm run dev或删掉dist目录重新npm run dev
4、重启或更新微信开发者工具。
在添加UI组件后,报页面丢失,TypeError: Cannot read property 'index' of undefined
1、新建的页面,没有重新打包
2、添加的组件路径有问题,路径错误或者是重复添加
分享到此结束,之后如果我还遇到了什么坑会继续分享的!
小程序使用mpvue框架无缝接入Vant Weapp组件库的更多相关文章
- 在mpvue框架中使用Vant WeappUI组件库的注意事项
1如何引入组件库 有两种方法 1 npm下载 2 下载代码,下面介绍第二种方法. 在gitHub上, 链接如下 https://github.com/youzan/vant-weapp 首先在自己项目 ...
- 使用Vue开发微信小程序:mpvue框架
使用Vue开发微信小程序:mpvue框架:https://www.jianshu.com/p/8f779950bfd9
- 快速上手小程序的mpvue框架
一.什么是mpvue框架? mpvue 是一个使用 Vue.js 开发小程序的前端框架.框架基于 Vue.js 核心(所以建议熟练掌握vue再使用mpvue框架,否则还是建议去使用原生框架去写小程序) ...
- 微信小程序(mpvue框架) 购物车
效果图: 说明:全选/全不选, 1.数据: products:[{checked:true,code:"4",echecked:false,hasPromotions:true,i ...
- 用Vue.js开发微信小程序:开源框架mpvue解析
前言 mpvue 是一款使用 Vue.js 开发微信小程序的前端框架.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为 H5 和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程 ...
- 微信小程序搭建mpvue+vant+flyio
导语 上一篇文章微信小程序搭建mpvue+vant已经介绍了如何搭起mpvue项目及引入vant,本篇文章继续在它的基础上,引入flyio,并做一些封装,目的是为了在小程序发起请求. 这时读者会有些疑 ...
- 微信小程序搭建mpvue+vant
第一步:查看是否已经装了node.js $ node -v $ npm -v 正确姿势 没有装的话前往Node.js官网安装 第二步:安装cnpm $ npm install -g cnpm -- ...
- 小程序wepy.js框架总结
wepy.js借鉴了Vue的语法风格和功能特性,对官方提供的框架进行了封装,更贴近于MVVM架构模式,让开发者更加容易上手,增加开发效率.(脏数据处理--是否有标识.是否有响应) 前端开发的对组件化开 ...
- 小程序实践(六):view内部组件排版
涉及知识点: 1.垂直排列,水平排列 2.居中对齐 示例: 1.默认排版 , 一个父组件里面两个子view 显示效果: 2.先给父view设置一个高度和颜色值,用于看效果 3.实现水平排列和垂直排列的 ...
随机推荐
- 洛谷P2305 [NOI2014]购票 [DP,树状数组]
传送门 思路 显然是树形DP,显然是斜率优化,唯一的问题就是该怎么维护凸包. 套路1:树上斜率优化,在没有这题的路程的限制的情况下,可以维护一个单调栈,每次加入点的时候二分它会加到哪里,然后替换并记录 ...
- mysql 修改表结构以支持事务操作
修改表的类型为 INNODB 的 SQL: alter table category_ ENGINE = innodb; 查看表的类型的 SQL show table status from ...
- Thread 相关函数和属性
t=Thread(target=func) # 启动子线程t.start() # 阻塞子线程,待子线程结束后,再往下执行t.join() # 判断线程是否在执行状态,在执行返回True,否则返回Fal ...
- Mixed Content: The page at ‘https://XXX’ was loaded over HTTPS, but requested an insecure........
iframe引入视频的文件的时候报这个错 其实只要改成 加上一个s就好了 ...
- 微信小程序 wxParse插件显示视频
修改wxParse/html2json.js 文件 ,在 html2json(html, bindName) 方法里 var node = { node: 'element', tag: tag, } ...
- java面向对象-进度2
1.面向对象的五个基本原则 三个基本元素: 1. 封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面.面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的对象, ...
- jumpserver 堡垒机环境搭建
jumpserver 堡垒机环境搭建(图文详解) https://blog.csdn.net/my_bai/article/details/62226474 http://docs.jumpser ...
- python 设计模式之迭代器模式
#写在前面 真的有一大把年纪了,回头看看, 明明也很努力,却发现自己穷的一无所有,昨夜的事更是让我眼泪止不住的流,眼睛也肿了,委屈的愣是说不出一个字.前面荆棘丛生,身后已无退路,生活一地鸡毛,糟糕的一 ...
- C# 将文本写入到文件
将字符串数组写入到文件,每个元素为一行 string[] lines = { "First line", "Second line", "Third ...
- Inventor2018专业版软件安装激活教程
如果你安装的是Autodesk Inventor Professional 2018,那么序列号为:666-69696969,产品密钥为:797J1, 如果你安装的是Autodesk Inventor ...