:::danger 这是比较重要的内容 :::
为什么要使用组件库?
虽然建议初学者都使用原生进行开发,以便于熟悉语言和架构,但是对于学习时间紧、急于拿出成果的开发者来说,组件库是一个更好的选择(也可以说它是一个框架)。程序员做的事就是让后来的程序员更加轻松,因此,诞生了许多组件库。当然,这里说的组件库只是UI组件库,必须和vue、react等js框架区分开。
:::tip 怎么理解UI组件库 我们用房屋装修作为例子。你的房子里面需要一些家具。假如你前往宜家家居购买一些家具,比如沙发、床、桌子等,那么这时我们就可以把宜家比喻成一个装修组件库。你只需要把沙发从宜家里面拿出来,放到你的家里,你就完成了一个沙发的构建。但是,如果你不使用类似的组件库而只使用原生呢?就相当于如果你需要一个沙发,你就需要从锯木头、织布开始,慢慢地依靠自己造出这个沙发。
UI组件库就是这样,如果你需要一个搜索框,你只需要将它调用出来,而不是自己去写嵌套结构。因此使用UI组件库能够帮你减少很多css代码和html代码的书写。 :::
选择一个组件库
小程序方面,由于其生态良好性,因此它也有很多组件库,请看这篇文章 (opens in a new tab) ,它介绍了很多主流的小程序组件库。
本文选择使用Vant Weapp (opens in a new tab),请马上收藏这个文档。Vant是有赞前端团队基于有赞统一的规范实现的 Vue、React、微信小程序组件库,提供了一整套 UI 基础组件和业务组件。
选好组件库之后,建议团队里的设计人员也按照这个选定的框架进行设计,很多设计软件提供组件库原型的下载。例如即时设计-vant设计规范 (opens in a new tab)
下载安装vant
步骤一
使用npm安装
:::tip
这个方法要求你的电脑里安装了node.js环境,如果没有请看电脑配置npm环境 (opens in a new tab)。这个不会的话,可以给我留个言,我来写一个文档。这个工具以后也会用到,大家可以花点时间给装上。
:::
打开微信IDE里的终端。
输入npm指令安装。
# 通过 npm 安装
npm i @vant/weapp -S --production
步骤二
安装后,修改 app.json,将 app.json 中的 "style": "v2" 去除,小程序的新版基础组件强行加上了许多样式,难以覆盖,不关闭将造成部分组件样式混乱。
步骤三
然后修改 project.config.json,需要手动在 project.config.json 内添加如下配置,使开发者工具可以正确索引到 npm 依赖的位置。
{
...
"setting": {
...
"packNpmManually": true,
"packNpmRelationList": [
{
"packageJsonPath": "./package.json",
"miniprogramNpmDistDir": "./miniprogram/"
}
]
}
}
步骤四
构建npm包
点击工具-构建npm。
:::tip 经过上面的操作之后,就可以快乐地进行接口调用啦! :::
开始开发
俗话说,程序员就是API调用师(bushi),那么我们就来快乐地调用API吧!
使用如下的tabbar配置,这还没用到vant:
:::tip 效果如下
:::
调用一个日历选择组件
现在我们想要在首页上加一个日历!
首先,我们到vant的文档找到日历所在位置,然后查看调用方式。
他告诉我们要先声明组件,好,那我们就声明组件。
在app.json或index.json中引入组件。如果在app.json中引用,就可以全局使用,如果在某个界面的index.json中引用,则只能那个页面使用,这里我们在app.json中声明组件。
这里官方文档有点问题,实际上得引入两个组件。
"usingComponents": {
"van-calendar": "@vant/weapp/calendar/index",
"van-cell": "@vant/weapp/cell/index"
}
然后我们在主页,index.wxml中调用这个组件。
<van-cell title="选择单个日期" value="{{ date }}" bind:click="onDisplay" />
<van-calendar show="{{ show }}" bind:close="onClose" bind:confirm="onConfirm" />
然后在index.js中加入逻辑代码,这些都是从文档上直接copy的。
Page({
data: {
date: '',
show: false,
},
onDisplay() {
this.setData({ show: true });
},
onClose() {
this.setData({ show: false });
},
formatDate(date) {
date = new Date(date);
return `${date.getMonth() + 1}/${date.getDate()}`;
},
onConfirm(event) {
this.setData({
show: false,
date: this.formatDate(event.detail),
});
},
});
:::tip 实现效果如下 :::
:::tip 怎么样?有没有觉得非常的简单方便,就能写一个很复杂的日历组件啦? :::
调用一个开关组件
我们再来举一个例子,调用一个开关组件。
同样,添加app.json代码。
"usingComponents": {
"van-switch": "@vant/weapp/switch/index"
}
然后在index.wxml中引用它。
<van-switch checked="{{ checked }}" bind:change="onChange" />
在index.js中添加逻辑代码,注意,切不可直接复制粘贴,要将需要的代码补充到应该有的地方。
Page({
data: {
checked: true,
},
onChange({ detail }) {
// 需要手动对 checked 状态进行更新
this.setData({ checked: detail });
},
});
前面带红色断点的是我这次添加的内容:
效果如图:
:::info 结语 好了,这就是本节的内容了,vant-ui组件库是一个非常齐全的组件库,经过上面两个例子相信你已经能够触类旁通,使用组件库里的组件,构造出你想要的页面了. :::