如果你已经会写 Vue2 的页面,也能照着文档拼出 setup 语法,但一到"从零实现一个 Dialog"就开始卡壳——这个课就是冲着这个缺口来的。造轮子不是为了发 npm 包,而是把"我调用过它"变成"我知道它内部怎么转"。

先确认自己缺的是哪一块

这门课的门槛不低,也不该低。它默认你能看懂单文件组件、知道 props 和 emit 是干什么的,也用过 v-model。真正的分水岭在于:你是否清楚 v-model 在 Vue3 里是 modelValue + update:modelValue 的语法糖?是否知道 attrs 透传、slots 命名插槽、provide/inject 三者分别解决什么问题?如果这些还模糊,那么做 Switch 的时候你会写出来一个能跑但处处别扭的东西——状态被父组件和子组件来回改,最后不知道谁说了算。

课程从 Vite 起项目这一步开始,看似平淡,其实是很多人第一个卡点:看到 index.html 里的挂载点、main.ts 与 App.vue 的分工就开始晕。把环境这关过了,后面的组件才有地方安放。

轮子挑得有讲究,不是随手凑数

Switch、Button、Dialog、Tabs 这四个,恰好覆盖了组件开发的四种典型难题,而不是四道重复题。

  • Switch 考的是受控与非受控:父组件传值、子组件要通知、用户点击又要即时反馈,这三个方向的同步没处理好,就会出现"点了没反应"或"关不掉"。
  • Button 看着最简单,真正要处理的是 loading 态下的点击拦截、不同类型的类名组织,以及禁用与加载同时出现时的优先级。
  • Dialog 是本节最硬的一块:内容要渲染到 body 之外(否则被父级 overflow 裁掉)、要处理遮罩点击关闭、ESC 关闭、打开时锁滚动、关闭后清理。这些细节不写一遍,光看文档是记不住的。
  • Tabs 则把插槽和动态组件摆上台面,同时涉及选中态与内容的对应关系。

你会发现每个组件的难点都不在"写出来",而在"边界情况怎么办"。课程把常见报错单独拎出来讲,用的就是这些场景。

看完应该能回答这几个问题

判断自己有没有学到,不看笔记看能不能答上来:

  • 一个组件被父组件传入的值和它自己的内部状态冲突时,该以谁为准,为什么?
  • 为什么弹窗组件常常要借助 teleport,直接写在模板里会踩什么坑?
  • v-model 在一个自定义组件上到底展开了什么?多个 v-model 又怎么写?
  • 当组件里报了"未定义的属性"或者样式不生效,通常先查哪几处?

答不上来,说明只是抄了一遍代码;能用自己的话说清楚,才算真的过了这关。

配套练习别省

造轮子这类内容,光看不练等于没看。建议的顺序是:先跟着把环境跑起来,然后关掉参考实现,自己写一遍 Switch 和 Button,卡住了再回头看。Dialog 和 Tabs 允许先抄后改,但至少要做一次改写——比如把 Dialog 改成支持自定义头部插槽,给 Tabs 加一个懒加载。这种"在别人代码上动刀"的过程,比从头默写更接近真实项目。

如果你只是想快速上手 Vue3 写业务,这门课可能偏重了;但如果你已经在项目里被组件通信和边界情况折磨过,想弄清楚到底哪里没想明白,那就对了。

Vue3造轮子

课程详情

课程介绍

本课程深入浅出地讲解了Vue3框架下的组件开发,从基础环境搭建到高级组件制作,全面覆盖Vue3的核心特性。

适合人群

  • 有基础的Vue2开发者,希望快速掌握Vue3
  • 对前端开发感兴趣,想要学习组件化开发的工程师
  • 希望提升自己项目开发能力的开发者

学习收获

  • 掌握Vue3框架下的组件开发流程
  • 学会使用vite搭建项目环境
  • 了解并解决常见报错问题
  • 制作实用的Switch、Button、Dialog、Tabs等组件

课程亮点

  • 从零开始,逐步深入,适合不同水平的学习者
  • 结合实际项目案例,学以致用
  • 详细讲解常见报错,避免开发过程中的困扰
  • 提供完整的项目结构,方便学习和实践

课程目录

1-课程介绍
  Vue 3 造轮子课程介绍
2-开发环境搭建
  0-课程介绍.png
  1-windows开发环境搭建.png
  2-mac环境搭建.png
  3-Volar-Vue终极开发神器!.png
  4-课后习题.png
3-常见报错解决办法
  1-props.ok.()报错.png
  2-rollup -c 报错 error Unexpected.png
  3.png
  4..png
  5.png
  6.png
  7.png
  8.png
  9.png
  10.png
  11.png
4-使用vite搭建官网
  0-本章介绍.txt
  1-创建项目
  2-初始化项目
  3-安装并初始化 vue-router
  4-创建首页和文档页
  5-封装 Topnav
  6-用 provide 和 inject 实现切换功能
  7-手机页面上的切换按钮
  8-路由间切换
  9-基本完成官网
  10-课后习题.png
5-制作 Switch 组件
  0-本章介绍.png
  1-初始化 switch 组件
  2-切换开关状态
  3-添加 value属性和 input 事件
  4-父子组件通信
  5-小结
  6-Vue 3 新版 v-model 用法
  7-如何借chao鉴xi别人的皮肤
  8-知识点总结
  9-课后习题.png
  源码领取.txt
6-制作button组件
  0-文本.txt
  0-本章介绍.png
  1-创建 Button 组件
  2-Vue 3 属性绑定细节
  3-Button 基础样式
  4-库 CSS 的两个注意事项
  5-CSS最小影响原则
  6-完成 Button 组件
  7-推荐 Wired Elements
  课后习题.png
7-制作 Dialog 组件
  0-文本.txt
  0-本章介绍.png
  1-Dialog需求分析与API设计
  2-创建Dialog组件
  3-让Dialog支持visible属性
  4-让Dialog支持点击关闭
  5-让Dialog支持title和content
  6-使用具名插槽
  7-使用Teleport
  8-一句代码打开 Dialog
  课后习题.png
8-制作 Tabs 组件
  0-文本.txt
  0-本章介绍.png
  1-创建 Tabs 和 Tab 组件
  2-如何检查子组件的类型
  3-渲染嵌套的插槽
  4-显示被选中的导航
  5-显示被选中的内容,失败第一次
  6-显示被选中的内容,失败第二次
  7-失败了两次,最终使用 CSS 切换内容
  8-动态设置 div 的宽度
  9-动态设置 div 的位置
  10-三处优化代码
  11-selectedItem.value is null 错误解决过程
  12-总结
  13-尤雨溪帮我改bug
  讲义
    -9-11-11-29-17.pptx
    -9-11-11-30-19.pdf
  课后习题.png
9-官网装修 - 首页
  0-文本.txt
  0-本章介绍.png
  1-整体效果预览
  2-从图片中取色
  3-首页渐变背景
  4-给文字和链接添加样式
  5-使用 iconfont.cn 添加 logo 和 icon
  6-使用 clip-path 画圆弧
  7-完善首页的各种细节
  8-总结
  课后习题.png
10-官网装修 - 文档页
  0-BUG反馈.png
  0.0-文本.txt
  0.0-本章介绍.png
  1-创建更多路由
  1-文本.txt
  2-高亮当前路由
  3-引入 Github 的 Markdown 样式
  4-支持 import markdown 文件
  5-选看:解释一下 md.ts
  6-事不过三,消除重复
  7-你的代码有什么缺点
  8-展示源代码
  9-小优化:使用 component
  10-五彩斑斓的源代码
  11-神奇的封装:Demo 组件
  12-追求完美,永无止境
  讲义
    -9-18-17-16-18.pptx
  课后习题.png
11-发布源代码至 npm
  0-本章介绍.png
  0-本章介绍.txt
  1-解决上节课的遗留问题
  2-部署 GitHub Pages 发现 404
  3-成功部署官网到 GitHub
  4-一键部署
  5-修复 Tabs 组件的 bug
  6-显示或隐藏代码
  7-rollup -c 编译库文件
  8-解释 rollup.config.js
  9-npm login 和 npm publish
  10-模拟别人使用自己的组件
  11-修复 watchEffect
  12-再次完善官网
  13-部署到码云
  14-把项目加到简历,Vue 2 如何升级到 Vue 3
  讲义
    -9-25-8-27-13.pptx
  课后习题.png
12-【完结】
  本章介绍.png
课程简介.png