Vant 4.0 正式发布


Vant 4.0 上周发布了正式版。发布公告写道,这是 Vant 自 2017 年开源以来发布的第四个重要版本。

在本次迭代中,Vant 支持了深色模式,增加五个新组件,改善工具函数 API 并重构 Picker 等组件,同时继续在轻量化和易用性方面做出改进。

Vant 是一个轻量、可靠的移动端组件库,于 2017 年开源。

目前 Vant 官方提供了Vue 2 版本、Vue 3 版本和微信小程序版本,并由社区团队维护 React 版本和支付宝小程序版本。


支持深色模式

Vant 4.0 支持切换所有组件为深色模式。

只需要把 ConfigProvider 组件的 theme 属性设置为 dark,即可切换为深色模式,将页面上的所有 Vant 组件变成深色风格。

<van-config-provider theme="dark">
<!-- child components -->
</van-config-provider>

同时,Vant 4.0 文档也已支持切换为深色模式:

几个新组件

Vant 4.0 包含以下新组件:

  • BackTop 回到顶部:返回页面顶部的操作按钮。
  • TimePicker 时间选择器:用于时间选择,包括时、分、秒。
  • DatePicker 日期选择器:用于日期选择,包括年、月、日。
  • PickerGroup 选择器组:用于结合多个 Picker 选择器组件,在一次交互中完成多个值的选择。
  • Skeleton 骨架屏子组件:通过 SkeletonTitle、SkeletonImage、SkeletonAvatar 等子组件来自定义骨架屏。

其中,TimePicker 和 DatePicker 由旧版的 DatetimePicker 组件拆分而来,DatetimePicker 组件不再提供。你可以通过 PickerGroup 来实现同时选择日期和时间的交互效果。

保持轻量

Vant 4.0 的安装体积降低 30%,包体积保持轻量。

随着 npm 生态的发展,node_modules 正在吞噬我们的磁盘空间。为了缓解 node_modules 黑洞、加快安装速度,我们对 Vant 的 npm 依赖和构建产物进行了优化。

相较于 Vant 3.6.2 版本,Vant 4.0.0 版本的安装体积由 7MB 下降至 5MB。作为对比,社区中主流组件库的安装体积普遍在 15MB ~ 80MB。你可以通过 packagephobia 来查询 npm 包的安装体积。

在包体积上,本次更新依然加量不加价,Minified + Gzipped 后的体积保持在 70KB 以下:

统一主色调

Vant 4.0 统一了所有组件的主色调。

在之前的版本中,Vant 组件有两种主色调,部分组件采用蓝色 #1989fa 作为主色调,另一部分则采用红色 #ee0a24

为了保持色彩规范的一致性,我们在 Vant 4 中对主色调进行统一,所有组件均采用蓝色作为主色调。

统一主色调后,主题定制会变得更加容易。比如,你可以覆盖 --van-primary-color 这个 CSS 变量,将所有组件的主色调设置为绿色:

:root {
--van-primary-color: #07c160;
}

按需引入方式调整

Vant 4.0 不再使用 babel-plugin-import 实现按需引入。

在早期,组件库大多使用 babel-plugin-import 实现按需引入,这意味着组件库会强依赖 Babel 编译。从 Vant 4.0 开始,将不再支持 babel-plugin-import,主要带来以下收益:

  • 不再强依赖 Babel 编译,项目可以使用 SWC、esbuild 等现代编译工具,进而提升编译效率。
  • 不再受到 babel-plugin-import 的 import 限制,可以从 Vant 中导入除组件以外的内容,比如 Vant 4 中新增的 showToast 方法,或是 buttonProps 对象:
import { showToast, buttonProps } from 'vant';

在包体积方面,移除 babel-plugin-import 对项目的 JS 体积不会有影响,因为 Vant 默认支持通过 Tree Shaking 来移除不需要的 JS 代码,而 CSS 代码可以通过 unplugin-vue-components 插件实现按需引入,详细用法请参考 「快速上手」

样式变量类型提示

Vant 4.0 提供了样式变量的类型提示。

Vant 提供了 700 多个样式变量,你可以通过 CSS 代码或 ConfigProvider 组件修改这些样式变量。在 Vant 4.0 中,我们新增了 ConfigProviderThemeVars 类型,以提供样式变量的类型提示。

因此在编写 TypeScript 代码时,你可以通过类型提示来补全主题变量名称:

Picker 组件重构

Vant 4.0 重构了 Picker 组件,以及基于 Picker 的 Area 和 DatetimePicker 组件。

在之前的版本中,Picker 组件的 API 设计不够合理,导致大家在使用时经常遇到问题,比如:

  • Picker 的 columns 数据格式不合理,容易产生误解。
  • Picker 的数据流不清晰,暴露了过多的实例方法来对数据进行操作。
  • DatetimePicker 的逻辑过于复杂,经常在边界场景下出现 bug。

为了解决上述问题,我们在 Vant 4.0 中对 Picker 组件进行了重构,同时也重构了基于 Picker 派生出的 Area  DatetimePicker 组件。

如果你的项目中使用了这三个组件,请阅读 「升级指南」 进行升级。

组件工具函数调整

Vant 4.0 调整了组件工具函数的用法,使其更符合直觉。

Vant 3 提供了一些组件工具函数,比如调用 Dialog() 函数,可以快速唤起全局的弹窗组件,而 Dialog.Component 才是 Dialog 对应的组件对象。

// 函数调用
Dialog({ message: 'Hello World!' });

// 组件注册
app.use('van-dialog', Dialog.Component);

以上 API 设计导致 Dialog 等支持工具函数的组件与常规组件存在用法差异,容易被误用;同时也导致 unplugin-vue-components 无法自动引入 Dialog 等组件。

为了更符合直觉,我们在 Vant 4 中调整了组件工具函数的调用方式,受影响的函数包括 Dialog()Toast()Notify()  ImagePreview()。以 Dialog 为例,我们将 Dialog() 函数重命名为 showDialog(),并让 Dialog 直接指向组件对象。

// 函数调用
showDialog({ message: 'Hello World!' });

// 组件注册
app.use('van-dialog', Dialog);

为了便于存量代码迁移至 Vant 4.0,我们提供了兼容方案,你可以使用 @vant/compat 中导出的 Dialog() 函数来兼容原有代码。

import { Dialog } from '@vant/compat';

Dialog({ message: 'Hello World!' });

@vant/compat 中导出的 Dialog() 与 Vant 3 中的 Dialog() 拥有完全一致的 API 和行为,因此在升级时,你只需要修改它的引用路径,其余代码可以保持不变。在项目完成升级到 Vant 4.0 后,建议在迭代中逐步替换为新的 showDialog() 等方法,并移除 @vant/compat 包。

事件命名调整

Vant 4.0 将事件名改为驼峰格式。

从 Vant 4 开始,所有的事件均采用 Vue 官方推荐的驼峰格式进行命名。

// Vant 3
emit('click-input');

// Vant 4
emit('clickInput');

这项改动不影响原有的模板代码,Vue 会自动在模板中对事件名进行格式转换,因此你无须做任何更改。

<!-- 以下代码可以照常运行,无须做任何更改 -->
<van-field @click-input="onClick" />

如果你在 JSX 中使用 Vant 组件,需要将监听的事件名调整为驼峰格式,原有的中划线格式将不再生效,新的监听方式更加符合 JSX 本身的规范:

// Vant 3
<Field onClick-input={onClick} />

// Vant 4
<Field onClickInput={onClick} />

移除 Less 变量

Vant 4.0 不再支持通过 Less 变量定制主题。

目前 Vant 已经支持基于 CSS 变量的主题定制,相较于 Less 定制更加灵活。因此,Vant 4 将不再提供基于 Less 的主题定制。这意味着 Vant 的 npm 包中将不再会包含 .less 样式源文件,仅会提供编译后的 .css 样式文件。

如果你的项目正在使用旧版的 Less 主题定制,请使用 ConfigProvider 全局配置 进行替换。

Vant Cli 5.0

本次更新同步发布了 Vant Cli 5.0 版本。

Vant Cli 是 Vant 底层的组件库构建工具,本次更新内容有:

  • 升级 Vite 到 3.0 版本,并对相关的 Vite 插件进行升级。
  • 不再默认安装 stylelint  @vant/stylelint-config 依赖,需要的话可以自行安装:
npm add stylelint@13 @vant/stylelint-config
  • 不再默认安装 gh-pages 依赖,请按照如下方式更新 package.json:
- "release:site": "pnpm build:site && gh-pages -d site-dist",
+ "release:site": "pnpm build:site && npx gh-pages -d site-dist",

版本信息

目前 Vant 官网 和 npm latest 标签均已指向 Vant 4.0。

我们为 Vant 4.0 准备了完整的升级指南,请阅读 从 v3 升级到 v4 进行升级。

同时,Vant 3.x 也会进入维护状态,后续 Vant 各个版本的维护状态如下:

名称 框架 发布时间 维护状态
Vant 4 Vue 3 2022.12 持续迭代新功能
Vant 3 Vue 3 2020.12 停止迭代新功能,bug 会被处理和修复
Vant 2 Vue 2 2019.06 停止迭代新功能,重要 bug 会被处理和修复
Vant 1 Vue 2 2018.03 停止维护,不再接受 PR

相關推薦

2023-11-22

背景: Vant 是一个轻量、可定制的移动端组件库,由有赞团队开源。近日,一名开发者在 Vant 的 GitHub 仓库提交了一个 issue:https://github.com/youzan/vant/issues/12453。 直奔主题,请阅读这名开发者与维护者的问答互动: Vant 维护

2023-11-22

微信小程序商城 wechat-app-mall 已经升级至 version 14.14.2 ,具体详情请查看码云项目主页更新 本次更新功能如下: 保存小程序码到手机相册,用户拒绝后给你提示并引导用户打开设置去开启权限; 上传文件接口升级; 关于

2022-11-04

2022云栖大会上,OceanBase社区版4.0 Beta(公测)正式亮相,与企业版拥有同等性能,更兼容、更易用,2分钟内即可完成快速部署。这意味着,业内首个兼容MySQL的单机分布式一体化数据库正式上线。 OceanBase 4.0降低了数据库使用

2023-06-28

Wasmer 4.0 已正式发布。 Wasmer 是支持 WASI 和 Emscripten 的通用 WebAssembly 运行时,提供基于 WebAssembly 的超轻量级容器,专注于支持在任何平台上运行 WASM 代码:从桌面端到云端、以及 IoT 设备,并且能嵌入在任何编程语言中。

2023-10-27

Yarn 正式发布了 4.0 稳定版。 Yarn 不仅是现代化的 JavaScript 软件包管理器,还可以作为项目管理工具。无论你是小型项目还是大型单体仓库(monorepos),无论是业余爱好者还是企业用户,Yarn 都能满足你的需求。 与 3.x 相比

2023-10-19

创始人、董事长兼首席执行官李彦宏宣布文心大模型 4.0 正式发布,开启邀请测试。 李彦宏表示,文心大模型 4.0 是迄今为止最强大的文心大模型,实现了基础模型的全面升级,在理解、生成、逻辑和记忆能力上都有着明显提升

2023-07-12

img:kerdkanno   极速后台框架 FastAdmin V1.4.0 正式版 FastAdmin 致力于服务开发者,努力为开发者节省更多的时间,让大家有更多的时间读书、健身、开源、投资、帮朋友和陪家人。 更新记录: 新增url_clean和check_url_allowed安

2022-10-08

它被用于故障排除、分析、开发和教育。Wireshark 4.0 近日正式发布了,从版本号上看,自 3.6 以来,新版本带来了很多变化。 默认的主窗口布局 在过去的版本中,Wireshark 遵循其前辈们制定的标准,将数据包列表、数据包细节和

2022-11-29

2022年11月28日,MeterSphere一站式开源持续测试平台正式发布v2.4.0版本。 在这一版本中,MeterSphere在测试跟踪和接口测试模块中对首页进行了UX交互升级,将部分指标进行了饼图、柱状图的展示优化,同时根据社区用户的实际使用

2022-03-01

Podman 正式发布了全新的大版本——v4.0。 发布公告写道,Podman 4.0 是有史以来最重要的版本之一,增加了 60 多项新特性,主要更新内容是完全重写网络堆栈,以提升功能和性能。此外还有许多其他的变更,包括改进 Podman

2022-12-13

继在五个月前发布 Vite 3 后,现在 Vite 4 正式发布。如今 npm 每周的下载量从 100 万上升到 250 万,并继续保持增长。在今年的 Jamstack Conf 调查中,社区中的使用率从 14% 跃升至 32%,同时保持了 9.7 分的高满意度。 主要变化 与 Vi

2023-10-16

ps://builder.blender.org/download/daily/ Blender 4.0将于2023年11月7日正式发布,增强了动画和绑定管线,改进建模和UV工具,增强Eevee和Cycles,同时添加用于雕刻、绘制和纹理的新节点和工具、升级软件的渲染能力等等。 据透露,Blender 4.0

2022-12-01

并且性能未能完全达到设定的目标。但团队会快速并定期发布错误修复版本(就像对 Alpha 和 Beta 所做的那样)。因此,Godot 4.0.1、4.0.2 等会在名义上的“4.0”稳定版本发布后不久出现。 同时,为了减轻贡献者的压力并避免延迟

2022-09-15

Godot 4.0 发布了第 17 个 Alpha 版本。 Godot 4.0 Alpha 17 主要变化: 新增了一个选项,支持在项目管理器 (Project Manager) 中把项目从 3.x 转换到 4.0 重构了 Android 输入处理 修复从 macOS 迁移到其他平台时,Ctrl/Cmd 键映射出现变化的