课程简介
这门课到底在造什么 主题很明确:从零手写一套 Vue 3.3 + TypeScript 4 的组件库,目标是能力上对齐 ElementPlus 这一档。它不是「教你用 ElementPlus」,而是把 ElementPlus 里那些看起来理所当然的东西拆开——按钮的 loading 怎么和点击事件互斥、表单校验怎么在 v-model 与 rules 之间做…
这门课到底在造什么
主题很明确:从零手写一套 Vue 3.3 + TypeScript 4 的组件库,目标是能力上对齐 ElementPlus 这一档。它不是「教你用 ElementPlus」,而是把 ElementPlus 里那些看起来理所当然的东西拆开——按钮的 loading 怎么和点击事件互斥、表单校验怎么在 v-model 与 rules 之间做双向同步、Tooltip 的定位怎么挂到 Popper.js 上、弹层怎么管理 z-index 与挂载节点。这些都是组件库能不能用的分水岭,而不是「写个按钮改改颜色」。
所以它的定位更接近工程对照材料:你手上如果正有一套内部组件库要维护,或者团队里 UI 规范和 antd / ElementPlus 有出入需要自研,这份内容的价值在于给你一个能跑通的参照实现,而不是看完就结束的视频。
技术栈与结构组织
版本选择落在 Vue 3.3 和 TypeScript 4 上,这个组合是刻意压过的。Vue 3.3 带来了泛型组件、defineSlots、defineModel 的早期形态,写表单、表格这类强类型组件时能少掉很多as any;TS 4 则决定了你在 d.ts 生成、类型导出、props 默认值推导上的写法边界。组件库这种「被别人的项目引用」的代码,类型一旦漏出去就是下游的编译报错,所以类型设计的部分值得逐节看。
16 章的推进方式是分层递进的:先立工程底座(构建、目录约定、样式方案、组件注册与按需引入),再进基础组件,最后攻通用型组件。基础层要解决的是 props 契约、事件命名、插槽透传、className 与样式变量这些横切问题;这些处理干净了,后面的复杂组件才不会互相打架。
复杂组件的拆法
资料包里的线索指向 Tooltip 这一章:从需求分析开始,到接入 Popper.js 做定位,再到补测试,整个节奏是一个标准复杂组件的完整生命周期。这条路径可以复用到 Popover、Dropdown、Select、DatePicker 上,它们的共同难点不在渲染,而在几处:
- 触发与关闭时机。hover、focus、click 三种触发模式下的进入/离开判定,以及延迟关闭怎么不闪烁。
- 定位与边界。Popper.js 提供的 placement、flip、preventOverflow 如何映射成对外暴露的 prop,而不是把库的配置原样漏出去。
- 挂载位置。teleport 到 body 之后,样式作用域、事件冒泡、滚动容器这些都会变,需要单独处理。
- 无障碍。aria-describedby、role 这些属性不是可选项,到了真实项目里就是验收项。
把这四点做扎实,一个 Tooltip 才敢说「媲美 ElementPlus」,否则只是长得像。
可复用的几块资产
抛开具体组件,这门课留下的可复用模块大致有这么几类,值得单独整理出来放进自己的脚手架:
- 构建与产物格式。ESM / CJS / 类型声明三套产物怎么出,package.json 的 exports 字段怎么配,样式是否单独抽离。
- 组件注册与按需加载。全局注册和按需引入两条路都要留,插件化 install 的写法决定了别人怎么用你的库。
- 样式体系。CSS 变量 + BEM 命名,主题色、圆角、间距统一走变量,这样主题定制才不需要改源码。
- 测试与文档。单测覆盖交互逻辑而非快照,文档站和组件代码同仓维护,改代码时能顺手改示例。
这几块和业务组件本身是解耦的,换一套组件照样能用,属于学一次长期受益的部分。
怎么用它自学
不建议顺着视频一集集看下去,效率低且容易产生「看懂了」的错觉。更实际的做法是:先挑一个你项目里正在用的组件,比如 Tooltip 或 Dialog,动手写一版,卡住了再回来看对应章节的实现思路,对比差异。类型定义和事件签名这两块尤其值得对照——它们的差别往往就是「能凑合用」和「能给别人用」的差别。
每写完一个组件,补一遍交互测试:键盘能否触发、边界情况会不会溢出视口、快速连续操作会不会残留状态。这些是组件库测试里最容易漏、上线后最容易被提 issue 的地方。源码和目录结构当参考手册用,用到哪查到哪,比线性刷完更贴合真实开发节奏。
mksz693-Vue3.3 + TS4 ,自主打造媲美 ElementPlus 的组件库(16章完结)
Vue3.3+TS4组件库打造实战
编辑点评
深入浅出Vue3.3与TypeScript4,打造媲美ElementPlus组件库,实战性强。
⭐ 编辑推荐
从基础到进阶,学习Vue3.3与TypeScript4,掌握组件库开发。
✨ 课程亮点
✦Vue3.3+TS4实战教学
✦组件库打造
✦媲美ElementPlus
课程目录
8-通用组件 -Tooltip 组件11 集
- 8-2 安装并试用 Popper.js【优质资源‖关注:cunWorkNotes 解锁】.mp4 [75.8 MB]
- 8-1 Tooltip 组件需求分析【整理不易‖记得关注:CunWorKNotes】.mp4 [29.1 MB]
- 8-10 给 Tooltip 组件添加测试【不易整理‖请关注:CunWorkNoteS】.mp4 [104.7 MB]
- 8-4 Tooltip 编码第二部分 - 支持动态事件.mp4 [97.8 MB]
- 8-9 给 Tooltip 组件添加样式.mp4 [87.3 MB]
- 8-7 Tooltip 编码第五部分 - 添加 popper 参数以及动画效果【整理不易‖记得关注:CunWorKNotes】.mp4 [72.6 MB]
- 8-11 Tooltip 组件总结【持续更新‖免费提供:CunworknoteS】.mp4 [36.0 MB]
- 8-3 Tooltip 编码第一部分 - 实现基本功能.mp4 [86.9 MB]
- 8-6 Tooltip 编码第四部分 - 实现手动打开关闭.mp4 [70.0 MB]
- 8-5 Tooltip编码第三部分 - 实现外侧点击关闭.mp4 [49.9 MB]
- 8-8 Tooltip 编码第六部分 - 实现延时显示隐藏功能【资源精选‖更多关注:CunworkNotes】.mp4 [78.1 MB]
2-Typescript 基础知识13 集
- 2-10 泛型(Generics) 第二部分 - 约束泛型.mp4 [16.6 MB]
- 2-4 数组和元组【持续更新‖免费提供:CunworknoteS】.mp4 [15.1 MB]
- 2-14 声明文件 第二部分.mp4 [27.2 MB]
- 2-13 声明文件 第一部分.mp4 [39.7 MB]
- 2-15 内置类型【资源精选‖更多关注:CunworkNotes】.mp4 [25.2 MB]
- 2-16 配置文件.mp4 [27.4 MB]
- 2-7 类型推论 联合类型和 类型断言【优质资源‖关注:cunWorkNotes 解锁】.mp4 [18.1 MB]
- 2-12 类型别名,字面量 和 交叉类型.mp4 [16.6 MB]
- 2-2 安装 Typescript【优质资源‖关注:cunWorkNotes 解锁】.mp4 [13.5 MB]
- 2-3 原始数据类型和 Any 类型.mp4 [13.3 MB]
- 2-1 什么是 Typescript 为什么要学习它【更多精选‖公众号:CunWorknotes】 .mp4 [24.1 MB]
- 2-9 泛型(Generics) 第一部分.mp4 [18.3 MB]
- 2-11 泛型第三部分 - 泛型在类和接口中的使用.mp4 [26.2 MB]
电子书5 条
- Vite 创建项目【优质资源‖关注:cunWorkNotes 解锁】.pdf [612.2 KB]
- css【更多精选‖公众号:CunWorknotes】 .pdf [1.6 MB]
- 组件分析以及编码【更多精选‖公众号:CunWorknotes】 .pdf [1.2 MB]
- Icon 组件.pdf [703.0 KB]
- 响应式基础.pdf [977.0 KB]
- …(已达 35 条上限,后续省略)
- …(已达 35 条上限,后续省略)
🎯 学习收获
- 掌握Vue3.3组件开发
- 精通TypeScript4
- 打造个人组件库