说明
这里接收参数props
以及事件emits
使用了以泛型的形式定义,不了解的可以看下这个vuejs.org/api/sfc-script-setup.html#typescript-only-features" rel="external nofollow noreferrer">传送门 。watch加了立即监听为了防止用户上来就赋值为true
导致下次不触发 。
单元测试新建shake.test.ts
import { describe, expect, it } from "vitest";import { mount } from '@vue/test-utils'import shake from '../shake.vue'// The component to testdescribe('test shake', () => { it("should render slot", () => { const wrapper = mount(shake, { slots: { default: 'Hello world' } }) // Assert the rendered text of the component expect(wrapper.text()).toContain('Hello world') }) it("should have class", () => { const wrapper = mount(shake, { props: { modelValue: true } }) expect(wrapper.classes()).toContain('k-shakeactive') })})这个单元测试的意思其实就是
slot
传入Hello world
,期望页面就会出现Hello world
props
传入modelValue
为true
,那么组件就包含样式k-shakeactive
pnpm run coverage
命令就会放下shake
测试代码通过了
文章插图
导出打包发布这里和以往组件实现基本一样了,这里直接贴代码
- shake/index.ts
- src/index.ts
pnpm run build:kittypnpm run pnpm run build:kitty即可完成发布
写在最后组件库的所有实现细节可以关注公众号 web前端进阶 获取,包括
环境搭建
,自动打包发布
,文档搭建
,vitest单元测试
等等 。如果这篇文章对你有所帮助动动指头点个赞吧~开源地址kitty-ui: Vite+Ts搭建的Vue3组件库
经验总结扩展阅读
- 2023年10月8日适合报更吗 2023年10月8日报更好吗
- Tomcat 调优之从 Linux 内核源码层面看 Tcp backlog
- 2023年10月8日灌溉好吗 2023年10月8日适合灌溉吗
- 2023年10月8日种花草吉日一览表 2023年10月8日是种花草吉日吗
- 2023年10月8日打农药行吗 2023年10月8日打农药吉日一览表
- 2023年10月8日适合挂招牌吗 2023年10月8日挂招牌黄道吉日
- 2023年10月8日塑绘行吗 2023年10月8日是塑绘吉日吗
- 2023年10月8日是立牌匾吉日吗 2023年10月8日适合立牌匾吗
- 2023年10月8日画画吉日一览表 2023年10月8日画画好不好
- 2023年10月8日砍树好吗 2023年10月8日砍树好不好