有美团开源出的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组件库的更多相关文章

  1. 在mpvue框架中使用Vant WeappUI组件库的注意事项

    1如何引入组件库 有两种方法 1 npm下载 2 下载代码,下面介绍第二种方法. 在gitHub上, 链接如下 https://github.com/youzan/vant-weapp 首先在自己项目 ...

  2. 使用Vue开发微信小程序:mpvue框架

    使用Vue开发微信小程序:mpvue框架:https://www.jianshu.com/p/8f779950bfd9

  3. 快速上手小程序的mpvue框架

    一.什么是mpvue框架? mpvue 是一个使用 Vue.js 开发小程序的前端框架.框架基于 Vue.js 核心(所以建议熟练掌握vue再使用mpvue框架,否则还是建议去使用原生框架去写小程序) ...

  4. 微信小程序(mpvue框架) 购物车

    效果图: 说明:全选/全不选, 1.数据: products:[{checked:true,code:"4",echecked:false,hasPromotions:true,i ...

  5. 用Vue.js开发微信小程序:开源框架mpvue解析

    前言 mpvue 是一款使用 Vue.js 开发微信小程序的前端框架.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为 H5 和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程 ...

  6. 微信小程序搭建mpvue+vant+flyio

    导语 上一篇文章微信小程序搭建mpvue+vant已经介绍了如何搭起mpvue项目及引入vant,本篇文章继续在它的基础上,引入flyio,并做一些封装,目的是为了在小程序发起请求. 这时读者会有些疑 ...

  7. 微信小程序搭建mpvue+vant

    第一步:查看是否已经装了node.js $ node -v $ npm -v   正确姿势 没有装的话前往Node.js官网安装 第二步:安装cnpm $ npm install -g cnpm -- ...

  8. 小程序wepy.js框架总结

    wepy.js借鉴了Vue的语法风格和功能特性,对官方提供的框架进行了封装,更贴近于MVVM架构模式,让开发者更加容易上手,增加开发效率.(脏数据处理--是否有标识.是否有响应) 前端开发的对组件化开 ...

  9. 小程序实践(六):view内部组件排版

    涉及知识点: 1.垂直排列,水平排列 2.居中对齐 示例: 1.默认排版 , 一个父组件里面两个子view 显示效果: 2.先给父view设置一个高度和颜色值,用于看效果 3.实现水平排列和垂直排列的 ...

随机推荐

  1. Ubuntu14.04 软件安装卸载

    ----常用软件安装 sudo apt-get install vim-gtk //安装vim软件 sudo apt-get install zip //安装解压软件和解压文件 sudo apt-ge ...

  2. Concurrent初探 --- Atomic 无锁

    一.CAS算法 Compare And Swap,CAS算法的过程是这样:它包含3个参数CAS(V,E,N).V表示要更新的变量,E表示预期值,N表示新值.仅当V值等于E值时,才会将V的值设为N,如果 ...

  3. Hadoop namenode连接journalnode限制导致集群启动失败

    错误1:刚搭建的新集群,启动journalnode以后,格式化namenode节点,出现如下错误 注意其中划红线的地方. 出现这个错误的原因是journalnode节点还没有准备好,而namenode ...

  4. hdu4283

    You Are the One Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  5. Jenkins 更新 jenkins.war的方法

    Jenkins 有时候更新,直接是主页提示下载 jenkins.war只需要把下载的jenkins.war 替换原来的jenkins.war 就可以了那么问题来了? 原来的 jenkins.war 到 ...

  6. Mininet系列实验(六):Mininet动态改变转发规则实验

    一. 实验目的 熟悉Mininet自定义拓扑脚本的编写:熟悉编写POX脚本动态改变转发规则 二.实验原理 在SDN环境中,控制器可以通过对交换机下发流表操作来控制交换机的转发行为.在本实验中,基于Mi ...

  7. ubuntu12.04 64位安装opencv-2.4.9

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/dengshuai_super/artic ...

  8. ArcGIS 10.5 tensorflow安装日记

    ArcGIS 10.5 tensorflow安装日记 商务科技合作:向日葵,135-4855__4328,xiexiaokui#qq.com Datetime: 2019年5月27日星期一 Os: w ...

  9. echarts3.0之关系图详解

    近期需要使用echarts关系图,当我打开echarts3.0官方demo后发现,对于新手而言,直接看懂有点儿难度,固写这样一篇文章让自己加深记忆,也便新手迅速上手.话不多说,开整生气! echart ...

  10. CV3——学习笔记-实战项目(上):如何搭建和训练一个深度学习网络

    http://www.mooc.ai/course/353/learn?lessonid=2289&groupId=0#lesson/2289 1.AlexNet, VGGNet, Googl ...