从0到1掌握vant-weapp:小程序开发者必备技能图谱
【免费下载链接】vant-weapp 项目地址: https://gitcode.com/gh_mirrors/van/vant-weapp
你是否还在为小程序开发中的界面美观度不足、组件复用困难而烦恼?是否想快速提升开发效率,打造出媲美原生App体验的小程序?本文将带你系统掌握vant-weapp组件库,从环境搭建到高级定制,全方位提升你的小程序开发能力。读完本文,你将能够:熟练配置vant-weapp开发环境、灵活运用各类核心组件、掌握主题定制技巧、解决常见开发问题。
为什么选择vant-weapp?
vant-weapp是有赞前端团队开发的一套微信小程序UI组件库,基于开源项目Vant打造,提供了丰富的组件和便捷的API,帮助开发者快速构建高质量的小程序界面。该组件库具有以下优势:
- 丰富的组件库:涵盖了按钮、表单、导航、弹窗等各类常用组件,满足小程序开发的多样化需求。
- 易用性高:提供了详细的文档和示例,上手简单,开发者可以快速集成和使用组件。
- 定制化强:支持通过CSS变量、外部样式类等多种方式进行样式定制,轻松打造符合项目需求的主题风格。
- 性能优化:组件经过精心优化,具有较高的性能和稳定性,确保小程序的流畅运行。
环境搭建与安装
背景知识
使用 Vant Weapp 前,请确保你已经学习过微信官方的 小程序简易教程 和 自定义组件介绍。
安装步骤
步骤一 通过 npm 安装
使用 npm 构建前,请先阅读微信官方的 npm 支持
# 通过 npm 安装
npm i @vant/weapp -S --production
# 通过 yarn 安装
yarn add @vant/weapp --production
# 安装 0.x 版本
npm i vant-weapp -S --production
步骤二 修改 app.json
将 app.json 中的 "style": "v2" 去除,小程序的新版基础组件强行加上了许多样式,难以覆盖,不关闭将造成部分组件样式混乱。
步骤三 修改 project.config.json
开发者工具创建的项目,miniprogramRoot 默认为 miniprogram,package.json 在其外部,npm 构建无法正常工作。
需要手动在 project.config.json 内添加如下配置,使开发者工具可以正确索引到 npm 依赖的位置。
{
...
"setting": {
...
"packNpmManually": true,
"packNpmRelationList": [
{
"packageJsonPath": "./package.json",
"miniprogramNpmDistDir": "./miniprogram/"
}
]
}
}
注意:由于目前新版开发者工具创建的小程序目录文件结构问题,npm构建的文件目录为miniprogram_npm,并且开发工具会默认在当前目录下创建miniprogram_npm的文件名,所以新版本的miniprogramNpmDistDir配置为'./'即可
步骤四 构建 npm 包
打开微信开发者工具,点击 工具 -> 构建 npm,并勾选 使用 npm 模块 选项,构建完成后,即可引入组件。
步骤五 typescript 支持
如果你使用 typescript 开发小程序,还需要做如下操作,以获得顺畅的开发体验。
安装 miniprogram-api-typings:
# 通过 npm 安装
npm i -D miniprogram-api-typings
# 通过 yarn 安装
yarn add -D miniprogram-api-typings
在 tsconfig.json 中增加如下配置,以防止 tsc 编译报错。
请将path/to/node_modules/@vant/weapp修改为项目的 node_modules 中 @vant/weapp 所在的目录。
{
...
"compilerOptions": {
...
"baseUrl": ".",
"types": ["miniprogram-api-typings"],
"paths": {
"@vant/weapp/*": ["path/to/node_modules/@vant/weapp/dist/*"]
},
"lib": ["ES6"]
}
}
示例工程
我们提供了一个示例工程,示例工程会帮助你了解如下内容:
- 基于 Vant Weapp 搭建小程序应用
- 样式覆盖方案
在开发者工具中预览示例小程序
# 将项目克隆到本地
git clone https://gitcode.com/gh_mirrors/van/vant-weapp.git
# 安装项目依赖
cd vant-weapp && npm install
# 执行组件编译
npm run dev
接着打开微信开发者工具,导入example目录的项目就可以预览示例了。
核心组件使用指南
引入组件
以 Button 组件为例,只需要在app.json或index.json中配置 Button 对应的路径即可。
所有组件文档中的引入路径均以 npm 安装为例,如果你是通过下载源代码的方式使用 @vant/weapp,请将路径修改为项目中 @vant/weapp 所在的目录。
// 通过 npm 安装
// app.json
"usingComponents": {
"van-button": "@vant/weapp/button/index"
}
// 通过下载源码使用 es6版本
// app.json
"usingComponents": {
"van-button": "path/to/@vant/weapp/dist/button/index"
}
// 通过下载源码使用 es5版本
// app.json
"usingComponents": {
"van-button": "path/to/@vant/weapp/lib/button/index"
}
使用组件
引入组件后,可以在 wxml 中直接使用组件
<van-button type="primary">按钮</van-button>
常用组件示例
Button 组件
Button 组件是小程序开发中常用的交互组件,vant-weapp 提供了多种类型和样式的按钮,以满足不同的场景需求。
示例代码:
<van-button type="primary">主要按钮</van-button>
<van-button type="default">默认按钮</van-button>
<van-button type="warning">警告按钮</van-button>
<van-button type="danger">危险按钮</van-button>
<van-button plain>朴素按钮</van-button>
<van-button disabled>禁用按钮</van-button>
你可以在example/pages/button/index.wxml中查看更多 Button 组件的示例用法。
Cell 组件
Cell 组件用于展示列表项,通常包含图标、文字和箭头等元素,可用于设置页面导航、展示信息等。
示例代码:
<van-cell-group>
<van-cell title="单元格" value="内容" />
<van-cell title="带图标单元格" icon="location-o" value="内容" />
<van-cell title="带跳转单元格" is-link value="内容" />
</van-cell-group>
相关示例可参考example/pages/cell/index.wxml。
Dialog 组件
Dialog 组件用于弹出对话框,可用于确认操作、提示信息等场景。
示例代码:
import Dialog from '@vant/weapp/dialog/dialog';
Dialog.alert({
title: '提示',
message: '这是一个提示对话框',
}).then(() => {
// on close
});
Dialog.confirm({
title: '确认',
message: '这是一个确认对话框',
})
.then(() => {
// on confirm
})
.catch(() => {
// on cancel
});
更多 Dialog 组件的用法可查看lib/dialog/dialog.js。
样式定制与主题修改
样式覆盖方法
Vant Weapp 基于微信小程序的机制,为开发者提供了以下 3 种修改组件样式的方法:
解除样式隔离
样式隔离的相关背景知识请查阅微信小程序文档
Vant Weapp 的所有组件都开启了addGlobalClass: true以接受外部样式的影响,可以使用如下 2 种方式覆盖组件样式:
在页面中使用 Vant Weapp 组件时,可直接在页面的样式文件中覆盖样式
<van-button type="primary">主要按钮</van-button>
/* page.wxss */
.van-button--primary {
font-size: 20px;
background-color: pink;
}
在自定义组件中使用 Vant Weapp 组件时,需开启
styleIsolation: 'shared'选项
<van-button type="primary">主要按钮</van-button>
Component({
options: {
styleIsolation: 'shared',
},
});
.van-button--primary {
font-size: 20px;
background-color: pink;
}
使用外部样式类
外部样式类的相关知识背景请查阅微信小程序文档
Vant Weapp 开放了大量的外部样式类供开发者使用,具体的样式类名称可查阅对应组件的“外部样式类”部分。
需要注意的是普通样式类和外部样式类的优先级是未定义的,因此使用时请添加!important以保证外部样式类的优先级。
<van-cell
title="单元格"
value="内容"
title-class="cell-title"
value-class="cell-value"
/>
.cell-title {
color: pink !important;
font-size: 20px !important;
}
.cell-value {
color: green !important;
font-size: 12px !important;
}
使用 CSS 变量
Vant Weapp 为部分 CSS 属性开放了基于 CSS 属性的定制方案。相较于解除样式隔离和使用外部样式类,这种方案支持在页面或应用级别对多个组件的样式做批量修改以进行主题样式的定制。
定制主题样式
定制单个组件的主题样式
在 wxss 中为组件设置 CSS 变量
<van-button class="my-button">
默认按钮
</van-button>
.my-button {
--button-border-radius: 10px;
--button-default-color: #f2f3f5;
}
或通过 style 属性来设置 CSS 变量,这使你能够轻松实现主题的动态切换
<van-button style="{{ buttonStyle }}">
默认按钮
</van-button>
Page({
data: {
buttonStyle: `
--button-border-radius: 10px;
--button-default-color: green;
`,
},
onLoad() {
setTimeout(() => {
this.setData({
buttonStyle: `
--button-border-radius: 2px;
--button-default-color: pink;
`,
});
}, 2000);
},
});
定制多个组件的主题样式
与单个组件的定制方式类似,只需用一个 container 节点包裹住需要定制的组件,并将 CSS 变量 设置在 container 节点上
<view class="container">
<van-button bind:click="onClick">
默认按钮
</van-button>
<van-toast id="van-toast" />
</view>
import Toast from '@vant/weapp/toast/toast';
Page({
onClick() {
Toast('我是提示文案,建议不超过十五字~');
},
});
.container {
--button-border-radius: 10px;
--button-default-color: #f2f3f5;
--toast-max-width: 100px;
--toast-background-color: pink;
}
定制全局主题样式
在 app.wxss 中,写入 CSS 变量,即可对全局生效
page {
--button-border-radius: 10px;
--button-default-color: #f2f3f5;
--toast-max-width: 100px;
--toast-background-color: pink;
}
样式变量
Vant Weapp 为部分 CSS 属性开放了基于 CSS 属性的定制方案。具体的样式变量可参考配置文件,下面是一些基本的样式变量:
// Component Colors
@text-color: #323233;
@border-color: #ebedf0;
@active-color: #f2f3f5;
@background-color: #f8f8f8;
@background-color-light: #fafafa;
常见问题与解决方案
组件引入失败
如果在引入组件时出现失败的情况,可能是以下原因导致:
- 路径配置错误:请检查
app.json或页面的json文件中组件的引入路径是否正确,确保路径指向组件的实际位置。 - npm 包未构建:如果使用 npm 安装组件,需要确保已经执行了构建 npm 包的操作,在微信开发者工具中点击 工具 -> 构建 npm。
- 版本不兼容:请确认安装的 vant-weapp 版本与小程序基础库版本是否兼容,可查看docs/markdown/changelog.md了解版本变化和兼容性信息。
样式定制不生效
当进行样式定制时,如果样式没有生效,可以从以下几个方面排查:
- 选择器优先级问题:确保自定义样式的选择器优先级高于组件默认样式,可以使用
!important提升优先级。 - 样式隔离设置:在自定义组件中使用 Vant Weapp 组件时,需要开启
styleIsolation: 'shared'选项,否则样式可能无法生效。 - CSS 变量名称错误:检查使用的 CSS 变量名称是否正确,可参考组件文档或配置文件中的样式变量列表。
组件功能异常
如果组件功能出现异常,可尝试以下解决方法:
- 查看控制台报错:打开微信开发者工具的控制台,查看是否有相关的错误信息,根据错误提示进行排查。
- 更新组件版本:可能是组件存在 bug,尝试更新 vant-weapp 到最新版本,看问题是否得到解决。
- 参考示例代码:检查自己的代码是否与示例代码一致,可参考example目录下的示例项目。
总结与展望
通过本文的介绍,你已经了解了 vant-weapp 的基本概念、环境搭建、核心组件使用、样式定制以及常见问题的解决方法。vant-weapp 作为一款优秀的小程序 UI 组件库,为开发者提供了丰富的组件和便捷的功能,能够极大地提高小程序开发效率。
未来,随着小程序技术的不断发展,vant-weapp 也将持续更新和优化,为开发者带来更多新的组件和功能。建议你关注项目的官方文档和更新日志,及时了解项目的最新动态。
希望本文能够帮助你更好地掌握 vant-weapp,在小程序开发中发挥出更大的作用。如果你在使用过程中遇到其他问题,欢迎在项目的 GitHub 仓库中提交 issue,与开发者和其他用户交流讨论。
最后,如果你觉得本文对你有帮助,不妨点赞、收藏、关注,以便后续查看更多相关内容。下期我们将介绍 vant-weapp 高级组件的实战应用,敬请期待!
【免费下载链接】vant-weapp 项目地址: https://gitcode.com/gh_mirrors/van/vant-weapp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



