Vant 4.0正式发布,基于Vue 3的移动组件库
Vant 4.0 上周发布了正式版。发布公告写道,这是 Vant 自 2017 年开源以来发布的第四个重要版本。
在本次迭代中,Vant 支持了深色模式,增加五个新组件,改善工具函数 API 并重构 Picker 等组件,同时继续在轻量化和易用性方面做出改进。
支持深色模式
Vant 4.0 支持切换所有组件为深色模式。
只需要把 ConfigProvider 组件的 theme
属性设置为 dark
,即可切换为深色模式,将页面上的所有 Vant 组件变成深色风格。
<van-config-providertheme="dark">
<!-- child components -->
</van-config-provider>
几个新组件
BackTop 回到顶部:返回页面顶部的操作按钮。
TimePicker 时间选择器:用于时间选择,包括时、分、秒。
DatePicker 日期选择器:用于日期选择,包括年、月、日。
PickerGroup 选择器组:用于结合多个 Picker 选择器组件,在一次交互中完成多个值的选择。
Skeleton 骨架屏子组件:通过 SkeletonTitle、SkeletonImage、SkeletonAvatar 等子组件来自定义骨架屏。
保持轻量
统一主色调
#1989fa
作为主色调,另一部分则采用红色 #ee0a24
。--van-primary-color
这个 CSS 变量,将所有组件的主色调设置为绿色::root {
--van-primary-color: #07c160;
}
按需引入方式调整
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 插件实现按需引入,详细用法请参考 「快速上手」。样式变量类型提示
ConfigProvider
组件修改这些样式变量。在 Vant 4.0 中,我们新增了 ConfigProviderThemeVars
类型,以提供样式变量的类型提示。Picker 组件重构
Picker
组件的 API 设计不够合理,导致大家在使用时经常遇到问题,比如:Picker 的 columns 数据格式不合理,容易产生误解。
Picker 的数据流不清晰,暴露了过多的实例方法来对数据进行操作。
DatetimePicker 的逻辑过于复杂,经常在边界场景下出现 bug。
Picker
组件进行了重构,同时也重构了基于 Picker
派生出的 Area
和 DatetimePicker
组件。组件工具函数调整
Dialog()
函数,可以快速唤起全局的弹窗组件,而 Dialog.Component
才是 Dialog
对应的组件对象。// 函数调用
Dialog({ message: 'Hello World!' });
// 组件注册
app.use('van-dialog', Dialog.Component);
unplugin-vue-components
无法自动引入 Dialog 等组件。Dialog()
、Toast()
、Notify()
和 ImagePreview()
。以 Dialog 为例,我们将 Dialog()
函数重命名为 showDialog()
,并让 Dialog
直接指向组件对象。// 函数调用
showDialog({ message: 'Hello World!' });
// 组件注册
app.use('van-dialog', Dialog);
@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 3
emit('click-input');
// Vant 4
emit('clickInput');
这项改动不影响原有的模板代码,Vue 会自动在模板中对事件名进行格式转换,因此你无须做任何更改。
<!-- 以下代码可以照常运行,无须做任何更改 -->
<van-field@click-input="onClick"/>
// Vant 3
<Field onClick-input={onClick} />
// Vant 4
<Field onClickInput={onClick} />
移除 Less 变量
.less
样式源文件,仅会提供编译后的 .css
样式文件。Vant Cli 5.0
升级 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 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 |
点击下方小程序
抽开源中国周边啦~
END
点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦~
微信扫码关注该文公众号作者