Vant-Weapp
由有赞团队开源的轻量、可靠的微信小程序 UI 组件库,提供 70+ 高质量组件,覆盖电商、工具类小程序等核心场景,是小程序生态中使用最广泛的第三方组件库之一
Vant Weapp 是有赞前端团队于 2017 年开源的微信小程序 UI 组件库,基于微信小程序原生自定义组件体系构建,利用 CSS 变量实现主题灵活性。提供 70+ 组件,尤其针对电商场景有专属业务组件。
Vant-Weapp
由有赞团队开源的轻量、可靠的微信小程序 UI 组件库,提供 70+ 高质量组件,覆盖电商、工具类小程序等核心场景,是小程序生态中使用最广泛的第三方组件库之一。
技术简介说明
Vant Weapp 是有赞(Youzan)前端团队于 2017 年开源的微信小程序 UI 组件库,作为 Vant 移动端组件库生态的小程序版本,与 Vue 2/Vue 3 版本共享设计理念与 API 风格。项目基于微信小程序原生自定义组件(Custom Component)体系构建,充分利用 Shadow DOM 的样式隔离能力与 CSS 变量的运行时穿透特性,实现了兼顾组件独立性与主题灵活性的技术方案。
作为微信小程序生态中最成熟的第三方组件库之一,Vant Weapp 在 GitHub 上积累了超过 18,400 Stars,npm 包 @vant/weapp 保持稳定下载量。其组件覆盖了基础组件、表单、导航、反馈、展示、业务等六大分类,尤其针对电商场景(商品卡片、SKU 选择器、提交订单栏等)提供了专属业务组件,是有赞多年电商技术积累的前端沉淀。
截至 2026 年,Vant Weapp 最新版本为 v1.11.7(2024 年 10 月发布),项目进入稳定维护阶段。虽然更新频率放缓,但凭借完善的文档体系、丰富的组件生态和广泛的社区基础,仍然是微信小程序开发中的主流 UI 选型之一。
基本信息
| 属性 | 详情 |
|---|---|
| 官网 | https://vant-ui.github.io/vant-weapp/ |
| 国内镜像 | https://vant.pro/vant-weapp/ |
| GitHub | https://github.com/youzan/vant-weapp |
| Gitee 镜像 | https://gitee.com/vant-contrib/vant-weapp |
| License | MIT |
| 最新版本 | v1.11.7(2024-10-14) |
| npm 包名 | @vant/weapp(v1.x)/ vant-weapp(v0.x,已废弃) |
| 主要维护者 | 有赞(Youzan)前端团队 |
| 核心贡献者 | chenjiahan、cookfront、wangnaiyi(w91)、pangxie(pangxie1991)、rex-zsd、nemo-shen、Lindysen、JakeLaoyu、landluck、wjw-gavin、inottn、zhousg 等 12+ 人 |
| GitHub Stars | 18,400+ |
| GitHub Forks | 3,500+ |
| GitHub Commits | 2,820+ |
| 技术栈 | JavaScript 41.3% / TypeScript 39.6% / Less 19.0% / Shell 0.1% |
| 小程序基础库要求 | >= 2.6.5 |
| 开源时间 | 2017 年 |
| 1.0 正式版 | 2019-12-11 |
| DCloud 插件市场 | https://ext.dcloud.net.cn/plugin?id=100 |
快速上手
安装
Vant Weapp 支持通过 npm、yarn 或 pnpm 安装,也支持直接下载源码使用。
# npm 安装(推荐)
npm i @vant/weapp -S --production
# yarn 安装
yarn add @vant/weapp -S --production
# pnpm 安装
pnpm add @vant/weapp -S --production
# 安装 0.x 旧版(已废弃,不推荐)
npm i vant-weapp -S --production注意:安装后需在微信开发者工具中执行「工具 → 构建 npm」,将 npm 包转换为小程序可用的代码,生成
miniprogram_npm目录。
或直接下载源码,将 dist 目录拷贝到项目中:
git clone https://github.com/youzan/vant-weapp.git基础配置
安装完成后,在 app.json 或页面的 .json 配置文件中通过 usingComponents 引入所需组件:
{
"usingComponents": {
"van-button": "@vant/weapp/button/index",
"van-cell": "@vant/weapp/cell/index",
"van-cell-group": "@vant/weapp/cell-group/index",
"van-icon": "@vant/weapp/icon/index",
"van-toast": "@vant/weapp/toast/index"
}
}最小示例
<!-- pages/index/index.wxml -->
<van-button type="primary" bind:click="onClick">主要按钮</van-button>
<van-cell-group>
<van-cell title="单元格" value="内容" />
<van-cell title="单元格" label="描述信息" />
</van-cell-group>
<van-toast id="van-toast" />// pages/index/index.js
const Toast = require('@vant/weapp/toast/toast');
Page({
data: {},
onClick() {
Toast.success('点击成功');
}
});核心概念与架构
技术架构
┌──────────────────────────────────────────────────────┐
│ 微信小程序运行时 │
│ ┌────────────────────────────────────────────────┐ │
│ │ Vant Weapp 组件层 │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ 基础组件 │ │ 表单组件 │ │ 业务组件 │ ... │ │
│ │ │ Button │ │ Field │ │GoodsAction│ │ │
│ │ │ Cell │ │ Picker │ │ SubmitBar │ │ │
│ │ │ Icon │ │ Calendar │ │ Card │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │ │
│ │ ↓ 每个组件 = 自定义组件 (Shadow DOM) │ │
│ │ ┌──────────────────────────────────────┐ │ │
│ │ │ WXML 模板 + WXSS 样式 + JS 逻辑 │ │ │
│ │ │ + WXS 脚本(高性能手势/动画) │ │ │
│ │ │ + CSS 变量主题系统(运行时可穿透) │ │ │
│ │ └──────────────────────────────────────┘ │ │
│ └────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌────────────────────────────────────────────────┐ │
│ │ 基础能力层 │ │
│ │ Mixin(behaviors) / Relation / BEM / WXS 工具 │ │
│ └────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌────────────────────────────────────────────────┐ │
│ │ 主题定制层 │ │
│ │ app.wxss 全局 CSS 变量 / ConfigProvider 组件 │ │
│ └────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘
核心设计原则
-
自定义组件体系:每个组件基于微信小程序自定义组件规范实现,拥有独立的 Shadow DOM,确保样式隔离与封装性。
-
CSS 变量主题系统:由于小程序不支持运行时编译 Less/Sass,Vant Weapp 采用 CSS 变量(Custom Properties)实现主题定制,变量天然穿透 Shadow DOM,外部可在运行时动态覆盖。从 v1.0 起所有组件支持 CSS 自定义属性,从 v1.7.0 起新增
ConfigProvider全局配置组件。 -
按需引入:组件以独立目录组织,开发者通过
usingComponents声明式引入,只打包实际使用的组件,控制代码包体积。 -
WXS 增强:部分组件(如滑动单元格、轮播、Stepper 等)利用微信小程序的 WXS(WeiXin Script)实现高性能动画与手势交互,避免频繁的
setData调用。WXS 中还封装了addUnit、style、bem等工具函数减少 setData 次数。 -
Mixin 复用(behaviors):通过小程序的
behaviors机制实现组件逻辑复用,如open-type(微信开放能力)、button(按钮基础)、page-scroll(页面滚动监听)、basic(基础方法)等。 -
Relation 父子通信:利用小程序的
relations实现父子组件联动通信(如 Tabs 与 Tab、CellGroup 与 Cell、Collapse 与 CollapseItem)。 -
TypeScript 支持:提供完整的类型声明包
vant-weapp-typings,源码使用 TypeScript 编写(39.6%),支持开发时的类型检查与智能提示。
源码目录结构
vant-weapp/
├── packages/ # 组件源码(每个组件独立目录)
│ ├── button/
│ │ ├── index.ts # 组件逻辑
│ │ ├── index.wxml # 模板
│ │ ├── index.less # 样式(编译为 WXSS)
│ │ ├── index.wxs # WXS 脚本
│ │ └── README.md # 组件文档
│ ├── cell/
│ ├── dialog/
│ ├── common/ # 公共样式与工具函数
│ └── wxs/ # 公共 WXS 脚本
├── dist/ # 编译产物(ES5)
├── example/ # 示例小程序
├── docs/ # 文档源文件
├── lib/ # 构建工具
├── types/ # 类型定义
├── package.json
└── gulpfile.js # 构建脚本
核心特性
1. 丰富的组件体系(70+ 组件)
覆盖 8 大分类:
| 分类 | 组件 |
|---|---|
| 基础组件 | Button、Cell、CellGroup、Icon、Image、Popup、Transition、Typography |
| 表单组件 | Field、Checkbox、Radio、Switch、Stepper、Rate、Search、Uploader、Picker、Calendar、Area、DatetimePicker、Cascader |
| 反馈组件 | Dialog、Toast、Notify、ActionSheet、ShareSheet、SwipeCell、Overlay、Loading |
| 展示组件 | Tag、Collapse、CountDown、Divider、List、Skeleton、Steps、ImagePreview、Empty、Circle、Progress、NoticeBar |
| 导航组件 | NavBar、Tabbar、Tabs、Sidebar、TreeSelect、Grid、IndexBar、DropdownMenu |
| 业务组件 | GoodsAction、GoodsActionIcon、GoodsActionButton、SubmitBar、Card、Badge |
| 布局组件 | Row、Col、Sticky、Panel |
| 工具组件 | ConfigProvider(全局配置/主题定制) |
2. CSS 变量主题定制
提供基于 CSS 变量的主题方案,支持全局主题覆盖与局部主题定制。通过 app.wxss 定义全局变量或在 ConfigProvider 组件中配置 theme-vars,实现运行时动态切换主题。
/* app.wxss - 全局覆盖 */
page {
--van-primary-color: #ff6034;
--van-button-primary-background-color: #ff6034;
--van-cell-text-color: #333;
--van-border-color: #f5f5f5;
}3. 按需引入
每个组件独立打包,通过 usingComponents 按需声明引入,避免全量加载,有效控制小程序代码包大小(小程序主包限制 2MB)。
4. 电商场景组件
作为有赞出品,天然具备强大的电商基因,提供 GoodsAction(商品导航)、GoodsActionButton(商品按钮)、SubmitBar(提交订单栏)、Card(商品卡片)、Area(省市区选择)等电商专属组件,经过有赞微商城实战打磨。
5. 微信开放能力集成
Button 组件原生支持微信所有 open-type 能力:
contact(客服消息)、share(转发)、getPhoneNumber(手机号获取)getUserProfile(用户信息)、chooseAvatar(头像选择)、launchApp(打开 App)openSetting(授权设置)、feedback(意见反馈)agreePrivacyAuthorization(隐私协议授权,v1.10.24 新增)getRealTimePhoneNumber(实时手机号,v1.10.21 新增)
6. 完善的文档与示例
官方文档详尽,每个组件提供完整的属性说明、事件列表、样式变量、代码示例。提供多个实战模板和 vant-demo 官方示例仓库。
7. 高性能交互
利用 WXS 脚本实现手势交互与动画(如 Swipe 滑动、Sticky 吸顶、Slider 拖动等),避免 JS 线程与渲染线程之间的频繁通信,保持 60fps 流畅体验。v1.6.5 版本对 Cell、Col、Divider、Loading、NoticeBar、Picker、Stepper、Sticky、SwipeCell、Switch、Tag、Transition、Uploader 等组件进行了批量性能优化。
8. 跨框架兼容
支持与 Taro、uni-app 等主流小程序开发框架集成使用。在支付宝小程序中可通过社区适配版 vant-aliapp 使用。Taro + React 多端方案可使用社区衍生库 @antmjs/vantui。
9. 稳定的 API 设计
自 v1.0 正式版以来,API 保持向后兼容。v1.0 时做了大量 API 调整(如 BadgeGroup → Sidebar、SwitchCell 移除等),之后保持向后兼容,组件属性和事件命名规范统一,降低升级维护成本。
10. Skyline 渲染引擎部分适配
从 v1.11.2 起开始修复 Skyline 模式下部分组件报错问题(Calendar、Input、Textarea、Popup),部分组件已初步支持微信新一代 Skyline 渲染引擎,但完整适配仍在进行中。
生态图
Vant 生态全景
│
┌───────────────────┼───────────────────┐
│ │ │
Vant (Vue) Vant Weapp 社区衍生
┌────┴────┐ ┌────┴────┐ ┌──────┴──────┐
│ Vant 2 │ │ 微信小程序 │ │ @antmjs/ │
│ (Vue 2) │ │ 原生组件 │ │ vantui │
├─────────┤ ├─────────┤ │ (Taro+React)│
│ Vant 4 │ │ 70+组件 │ ├─────────────┤
│ (Vue 3) │ │CSS变量 │ │ vant-aliapp │
├─────────┤ │主题定制 │ │ (支付宝适配) │
│React Vant│ │Skyline │ ├─────────────┤
│(社区维护)│ │部分适配 │ │ vantui.plus │
├─────────┤ └─────────┘ │ (多端版本) │
│ Vant CLI│ └─────────────┘
│ 构建工具 │
├─────────┤
│vant-demo│
│ 示例应用 │
└─────────┘
┌───────────────────────────────────────────────────┐
│ 设计资源 │
│ Sketch 设计稿 / Figma 组件库 / 图标库(iconfont.cn) │
└───────────────────────────────────────────────────┘
生态项目
| 项目 | 说明 |
|---|---|
| Vant | Vue 移动端组件库(v4.x,持续活跃更新) |
| Vant Weapp | 微信小程序组件库(本项目) |
| React Vant | 社区维护的 React 移动端组件库 |
| @antmjs/vantui | 社区维护的 Taro + React 多端组件库 |
| vant-aliapp | 支付宝小程序适配版本 |
| vant-weapp-typings | TypeScript 类型声明包 |
| Vant CLI | 组件库构建脚手架(v7) |
| vant-demo | 官方示例代码集 |
| @vant/icons | 图标包(v3.0,迁移至 iconfont.cn) |
跨端框架集成
| 框架 | 集成方式 | 支持端 |
|---|---|---|
| 原生小程序 | 直接使用 @vant/weapp | 微信 / 抖音小程序 |
| Taro | 使用 @antmjs/vantui(社区衍生库) | 微信 / 支付宝 / 百度 / H5 / React Native |
| uni-app | DCloud 插件市场引入 | 微信小程序 |
适用场景
1. 电商类小程序
Vant Weapp 内置丰富的电商业务组件(GoodsAction 商品导航、SubmitBar 提交订单栏、Card 商品卡片、Area 省市区选择等),源自有赞多年电商技术沉淀,是电商小程序的首选组件库。
2. 工具/效率类小程序
表单组件(Field 输入框、Calendar 日历、Picker 选择器、DatetimePicker 日期选择)、导航组件(Tabs、Sidebar、TreeSelect、DropdownMenu)和反馈组件(Toast、Dialog、Notify)覆盖工具类小程序的核心交互需求。
3. 快速原型与 MVP 开发
丰富的开箱即用组件和详尽的文档使开发者可在数天内完成一个功能完整的微信小程序 MVP,大幅减少 UI 开发工作量。
4. 品牌定制项目
借助 CSS 变量主题方案和 ConfigProvider 组件,可以快速适配品牌视觉规范,实现定制化 UI 风格,适合为不同品牌客户定制小程序外观。
5. 内容与资讯类小程序
List(无限滚动列表)、Skeleton(骨架屏)、NoticeBar(通知栏)、Tabs(标签页)、ImagePreview(图片预览)、CountDown(倒计时)、Tag(标签)等展示类组件适合新闻、社区、图文内容类应用。
6. 营销活动类小程序
ActionSheet(操作面板)、ShareSheet(分享面板)、Dialog(对话框)、Toast(轻提示)、Notify(消息通知)、Popup(弹出层)适合抽奖、促销、分享裂变等营销场景。
7. 内部管理系统小程序端
企业微信/微信小程序作为内部管理系统的移动端入口时,Vant Weapp 提供统一、规范的 UI 组件,降低多端维护成本。
开发与工程化
构建流程
# 克隆仓库
git clone https://github.com/youzan/vant-weapp.git
cd vant-weapp
# 安装依赖
npm install
# 开发模式(实时编译)
npm run dev
# 生产构建
npm run build
# 预览示例(微信开发者工具打开 example/ 目录)项目工程化配置
- 构建工具:基于 Gulp + TypeScript + Less +
@vant/cli(v7) - 包管理:npm / yarn / pnpm
- 代码规范:ESLint + Prettier
- 类型检查:TypeScript 严格模式
- 样式方案:Less + BEM 命名 + CSS 变量(
--van-命名空间前缀) - 版本管理:语义化版本(SemVer),GitHub Releases 发布
- CI/CD:GitHub Actions 自动化构建与发布
- 文档站点:基于 GitHub Pages 托管,国内镜像
vant.pro
开发规范
- 组件采用 TypeScript 编写,提供完整类型声明
- 组件命名使用
van-前缀(如van-button、van-cell) - 事件命名使用
bind:前缀,遵循小程序事件绑定规范 - 属性命名使用 camelCase,通过
properties声明 - 样式变量统一使用
--van-命名空间前缀(如--van-button-primary-background-color) - 每个组件提供
custom-class、custom-style等外部样式类,支持业务层样式覆盖
二次开发指南
- 组件源码位于
packages/<component>/目录 - 每个组件包含:
index.ts(逻辑)、index.wxml(模板)、index.less(样式)、index.wxs(脚本)、README.md(文档) - 修改源码后执行
npm run dev实时编译,在微信开发者工具中预览example/目录 - 组件通过
custom-class、custom-style等外部样式类支持业务层样式覆盖
性能与安全
性能优化
| 优化策略 | 说明 |
|---|---|
| 按需引入 | 通过 usingComponents 仅引入需要的组件,避免全量加载 |
| WXS 手势 | 滑动手势、吸顶等交互使用 WXS 实现,避免 JS 与渲染线程频繁通信 |
| Shadow DOM 隔离 | 每个组件样式独立,避免全局样式冲突和重复计算 |
| CSS 变量主题 | 运行时覆盖 CSS 变量无需重新编译,性能开销极低 |
| 图片懒加载 | Image 组件支持 lazy-load 属性,优化首屏加载 |
| 懒渲染 | Tabs、List 等组件支持 lazy-render,首次切换时才渲染内容 |
| 动画优化 | Collapse 使用 wx.createAnimation API 替代 CSS transition,提升动画帧率 |
| WXS 工具函数 | addUnit()、style()、bem() 等在 WXS 层执行,减少 setData 调用次数 |
| 包体积控制 | 移除 iOS 8 polyfill(v1.8.0)、精简依赖,npm 包默认输出 ES5 |
| 虚拟列表 | List 组件支持长列表虚拟化渲染,避免大量 DOM 节点 |
安全考量
| 安全维度 | 说明 |
|---|---|
| XSS 防护 | 组件不直接渲染用户输入的 HTML,小程序基于 WXML 模板引擎,天然防止 XSS |
| 依赖安全 | 零外部运行时依赖,npm 包 @vant/weapp 无传递依赖风险 |
| 构建依赖安全 | 定期更新 ws(v1.11.7 升级至 7.5.10)、rollup(升级至 4.22.4)等构建依赖 |
| 隐私合规 | Button 支持 agreePrivacyAuthorization open-type,适配微信隐私协议新规 |
| referrer-policy | Uploader 支持 referrer-policy 属性,控制请求来源信息泄露 |
| 代码审计 | 开源代码可审计,MIT 协议无商业使用风险 |
| npm 供应链 | 官方 npm 包由有赞团队维护,建议在 CI 中使用 lockfile 锁定版本 |
技术对比
与主流小程序组件库对比
| 维度 | Vant Weapp | WeUI | TDesign 小程序 | iView Weapp | NutUI |
|---|---|---|---|---|---|
| 维护方 | 有赞 | 微信官方(腾讯) | 腾讯 | TalkingData | 京东 |
| Stars | 18.4k+ | 27k+ | 4k+ | 6k+ | 7k+ |
| 组件数量 | 70+ | 30+(基础) | 60+ | 50+ | 70+ |
| 设计风格 | 电商/现代/活泼 | 微信原生 | 企业级/正式 | 简约/统一 | 电商 |
| 主题定制 | CSS 变量 + ConfigProvider | 有限 | CSS 变量 + Design Token | 基础 Less 变量 | Less 变量 |
| 业务组件 | 丰富(商品/SKU/订单) | 无 | 一般 | 无 | 丰富 |
| TypeScript | 完整支持 | 部分支持 | 完整支持 | 弱 | 完整支持 |
| 文档质量 | ★★★★★ | ★★★★ | ★★★★ | ★★★ | ★★★★ |
| 更新活跃度 | 稳定维护(低频) | 稳定 | 活跃 | ⚠️ 低维护 | 活跃 |
| Skyline 适配 | 部分(进行中) | ✅ 原生 | 较好 | ❌ | ❌ |
| 跨端支持 | Taro/uni-app 可用 | 仅微信 | 多端版本 | 仅微信 | 京东/Taro |
| 适合场景 | 电商/工具/定制 | 微信原生风格 | 企业级/腾讯生态 | 通用工具 | 京东生态/电商 |
Vant-Weapp vs TDesign Mini 选型建议
| 场景 | 推荐 | 理由 |
|---|---|---|
| 电商小程序 | Vant Weapp | 电商组件丰富,有赞实战验证 |
| 企业级应用 | TDesign Mini | 腾讯设计规范,Skyline 适配好 |
| 快速开发 | Vant Weapp | 社区资源丰富,文档完善 |
| 微信生态深度集成 | TDesign Mini | 腾讯出品,与微信设计体系更契合 |
| 跨端需求(Taro + React) | @antmjs/vantui | 社区多端方案成熟 |
| 需要持续新特性 | TDesign | 更新活跃,Skyline 适配推进中 |
最佳实践
1. 按需引入控制包体积
// ❌ 不推荐:在 app.json 中全量引入所有组件
{
"usingComponents": {
"van-button": "@vant/weapp/button/index",
"van-cell": "@vant/weapp/cell/index",
"// ... 几十个组件全量引入": ""
}
}
// ✅ 推荐:在页面 JSON 中按需引入
// pages/shop/shop.json
{
"usingComponents": {
"van-submit-bar": "@vant/weapp/submit-bar/index",
"van-goods-action": "@vant/weapp/goods-action/index",
"van-goods-action-button": "@vant/weapp/goods-action-button/index"
}
}2. 善用外部样式类
Vant-Weapp 组件提供丰富的外部样式类(custom-class、title-class、desc-class 等),优先使用这些样式类覆盖样式,而非强行穿透组件内部:
<van-cell custom-class="my-cell" title-class="my-title" title="标题" />.my-cell {
padding: 20rpx;
}
.my-title {
font-weight: bold;
}3. 全局主题统一配置
/* app.wxss - 全局主题变量 */
page {
--van-primary-color: #ff6034;
--van-button-primary-background-color: #ff6034;
--van-cell-text-color: #333;
--van-border-color: #f5f5f5;
}4. ConfigProvider 动态主题切换
<!-- 支持运行时切换主题 -->
<van-config-provider themeVars="{{ themeVars }}">
<van-button type="primary">主题按钮</van-button>
</van-config-provider>Page({
data: {
themeVars: {
primaryColor: '#ff6034',
buttonPrimaryBackgroundColor: '#ff6034'
}
}
});5. 自定义组件中使用 Vant Weapp
// 在自定义组件中使用需开启样式共享
Component({
options: {
styleIsolation: 'shared' // 允许外部样式穿透
},
// ...
});6. 表单组件配合双向绑定
v1.3.0 起支持简易双向绑定,在 Search、Slider、Rate 等组件上使用 bind: 前缀简化事件处理:
<van-search bind:search="onSearch" value="{{ searchValue }}" placeholder="请输入搜索关键词" />
<van-field bind:change="onChange" value="{{ inputValue }}" label="用户名" placeholder="请输入" />7. 长列表性能优化
使用 List 组件做无限滚动加载时,配合 lazy-render 和合理的 offset 阈值:
<van-list
loading="{{ loading }}"
finished="{{ finished }}"
finished-text="没有更多了"
bind:load="onLoad"
offset="50"
>
<van-cell
wx:for="{{ list }}"
wx:key="index"
title="{{ item.title }}"
/>
</van-list>8. 微信开放能力最佳实践
使用 Button 的 open-type 集成微信能力时,注意处理各种回调事件:
<van-button
open-type="getPhoneNumber"
bind:getphonenumber="onGetPhoneNumber"
type="primary"
>
获取手机号
</van-button>Page({
onGetPhoneNumber(event) {
if (event.detail.errMsg === 'getPhoneNumber:ok') {
const { code } = event.detail // 动态令牌,用于后端解密
// 发送 code 到后端服务
}
}
})9. 配合 Taro 框架使用
在 Taro 项目中使用 Vant Weapp,推荐通过社区衍生库 @antmjs/vantui 实现多端支持。直接在 Taro 中使用原生 @vant/weapp 仅限微信小程序端。
技术局限与边界
1. Skyline 渲染引擎兼容不完整
Vant-Weapp 最初为 WebView 渲染环境设计,在微信新一代 Skyline 渲染引擎下存在兼容性问题:
- NavBar 组件:在 Skyline 模式下无法正常使用(Issue #5893)
:host伪类:开启 Skyline 后部分组件会出现多余的:host伪类导致布局异常(Issue #6016)- 按需加载:与
lazyCodeLoading: "requiredComponents"配合使用时 Field 组件报错找不到bem方法
现状:官方从 v1.11.2 起逐步修复 Skyline 相关问题(Calendar、Input、Textarea、Popup 已初步修复),但完整适配仍在进行中。如需全面 Skyline 支持,建议关注官方更新或考虑 TDesign。
2. 维护节奏放缓
自 2024 年 10 月发布 v1.11.7 后,截至 2026 年 7 月未有新版本发布。项目进入稳定维护阶段,新特性增加较少,以 bug 修复为主。有赞团队核心维护精力已转向 Vant Vue 版本(v4.x)和其他新项目。
3. 小程序平台绑定
Vant Weapp 专为微信小程序设计,使用 WXML/WXSS/JS 技术栈,不能直接用于 Web(H5)、支付宝小程序或抖音小程序。如需跨端,需使用 Taro + @antmjs/vantui 等社区适配方案。抖音小程序可通过适配使用(社区方案),但非官方支持。
4. 样式覆盖受限
由于 Shadow DOM 样式隔离,深度自定义组件外观需要依赖 CSS 变量或 externalClasses 机制。对于未暴露 CSS 变量的样式细节,覆盖较为繁琐,需要解除样式隔离(styleIsolation: 'shared'),可能引入样式冲突风险。
5. 业务组件设计偏向电商
商品卡片、SKU 选择器等业务组件面向电商场景设计,非电商项目使用时可能需要大量定制或仅使用基础组件。
6. 不支持 Vue/React 语法
Vant Weapp 使用微信小程序原生组件体系(WXML + JS),不是 Vue 组件也不是 React 组件。开发者需要掌握小程序原生开发模式,不能直接使用 Vue/React 的模板语法和生命周期。Web 端需使用 vant(Vue)或 react-vant(React)。
7. 社区响应速度
由于项目进入低频维护阶段,GitHub Issues 的响应和修复速度可能较慢(当前约 132 个 Open Issues),紧急问题可能需要开发者自行 fork 修复并提交 PR。
学习资源
官方资源
社区教程
| 资源 | 说明 |
|---|---|
| 打造专业小程序界面:Vant Weapp 实战指南(CSDN) | 组件库使用与最佳实践 |
| 微信小程序中使用 Vant 组件库(掘金) | 从零开始集成教程 |
| Taro 中使用 Vant Weapp(Taro 文档) | Taro 官方集成文档 |
| 小程序 UI 组件库选型避坑指南(OSCHINA) | Vant vs TDesign 深度对比 |
| Vant 组件库多版本主题定制全攻略 | CSS 变量主题方案详解 |
| 五分钟上手 Vant(阿里云开发者社区) | 快速入门教程 |
| 抖音小程序中使用 Vant-Weapp | 非微信平台适配方案 |
| 小程序中使用 npm 安装 vant 实现按需引入 | 按需引入减少代码包 |
视频资源
- B 站搜索「Vant Weapp 小程序开发」可找到多个实战教程
- 慕课网、极客时间等平台有相关小程序开发课程涉及 Vant Weapp
2026 年现状
项目状态:稳定维护期
截至 2026 年 7 月,Vant Weapp 的最新版本仍为 v1.11.7(2024 年 10 月 14 日发布),近一年半未有新版本发布。项目进入「稳定维护」状态,意味着:
- API 冻结:不会再有破坏性变更,现有项目可放心长期使用
- 新功能停滞:不再增加新组件或重大特性(最后一个新组件 Cascader 于 v1.10.9 发布)
- Bug 修复为主:仅针对关键问题进行修复
- 有赞团队重心转移:核心维护精力已转向 Vant Vue 版本(v4.x,持续活跃更新)和其他新项目
版本演进历程
| 里程碑 | 版本 | 日期 | 亮点 |
|---|---|---|---|
| 首次开源 | v0.x | 2017 | 项目启动 |
| 1.0 正式版 | v1.0.0 | 2019-12 | npm 包重命名为 @vant/weapp,新增 11 个组件,全面支持 CSS 变量 |
| ConfigProvider | v1.7.0 | 2021-07 | 新增全局配置组件,支持动态主题切换 |
| 双向绑定 | v1.3.0 | 2020-05 | Slider、Search、Rate 等组件支持简易双向绑定 |
| Cascader 级联选择 | v1.10.9 | 2022-12 | 新增最后一个新组件 |
| Skyline 初步适配 | v1.11.2 | 2023-12 | 修复 Skyline 模式下部分组件报错 |
| 最新版本 | v1.11.7 | 2024-10 | Bug 修复,依赖升级 |
生态分化
2025-2026 年,小程序组件库生态出现明显分化:
- 腾讯 TDesign 小程序版快速崛起,作为腾讯官方设计体系的一部分,在 Skyline 适配和企业级场景获得更多关注
- 社区版 @antmjs/vantui 为 Vant 生态注入活力,支持 Taro + React 多端开发
- WeUI 作为微信官方组件库始终保持基础地位,但组件数量有限
- Vant Weapp 凭借历史积累和 18k+ Stars 的社区基础,仍然是存量项目中使用最广的小程序组件库
选型建议
| 场景 | 推荐方案 |
|---|---|
| 电商小程序(微信原生) | ✅ Vant Weapp(成熟稳定,首选) |
| 新项目 + 需要 Skyline | ⚠️ 谨慎选择,TDesign 更合适 |
| 存量 Vant Weapp 项目 | ✅ 继续使用,API 稳定无迁移压力 |
| 需要多端(H5/RN/多小程序) | ⚠️ 评估 @antmjs/vantui 成熟度 |
| 企业级 / 政务类 | TDesign Mini 更合适 |
| Vue 生态统一 | Vant Vue 4 + Vant Weapp(设计语言一致) |
| Taro + React 跨端 | @antmjs/vantui |
风险提示
- Skyline 全面适配时间不确定,如果项目强依赖 Skyline,建议做好技术储备或选择 TDesign
- 项目可能进入长期维护阶段,重大特性更新预期较低
- 新项目可考虑同时评估 TDesign Mini 作为备选方案
- 社区 Issues 响应速度较慢,紧急问题可能需要自行 fork 修复
总结
Vant Weapp 作为微信小程序生态的「老牌劲旅」,在 2026 年仍然是一个可靠、成熟、文档完善的选择。其 70+ 组件覆盖了绝大多数小程序开发场景,CSS 变量主题方案灵活实用,18k+ Stars 的社区基础保证了问题排查资源丰富。但新项目选型时,需要权衡其更新放缓的现实,结合团队技术栈和项目需求做出决策。对于追求最新特性和活跃社区的项目,TDesign 或社区衍生方案可能是更好的选择。