从零手搓一个 Element Plus
ericwxy

引子

经过一个月的准备,我的高仿 Element-plus 组件库项目,终于初步告一段落。在接下来的日子,我将开始录制开发过程的分享视频。希望可以帮助到有需要的小伙伴。

点击 Eric-UI (ericwxy.github.io) 查看组件文档

分享初衷

在这个信息化飞速发展的时代,前端开发已经成为软件开发中不可或缺的一部分。而组件库作为提升开发效率、保证项目质量的重要工具,一直是前端领域的热门话题。
随着 大模型的快速发展,普通的 CRUD 程序员被 AI 取代是肉眼可见的趋势。所以个人觉得需要更加复杂的项目经验,以及架构设计能力才能不被 AI 那么早的“抢饭碗”。

关于组件库

以上是组件库的文档链接,该组件库是基于 Vue3 + Typescript 封装的高仿 Element-plus 组件库。
其中用到了以下的技术

  • monorepo 的项目管理方式
  • Vitest 单元测试
  • Vitepress 书写组件
  • github actions 实现 自动化部署组件文档
  • 运用 大模型 辅助设计以及开发

下面是组件库文档中的组件列表

image

技术亮点

从组件的列表可以看出,这次选择复刻的 Element 组件是很有代表性的。

  • 通过 Loading 、Message、MessageBox、Notification 组件可以很好的诠释指令式调用组件的封装方式,我们也知道在日常的业务开发当中我们封装的 Vue 组件大部分都是申明式调用的。
  • Loading 组件提供 service 和 directive(vue 指令) 两种调用方式,可以进一步了解 vue 指令的封装方法。
  • 在 上面的 Loading、Message 等一些列反馈组件中 运用 自定义 hooks(组合式API) 的方式封装了对 z-index 的 计算,以及 Message 、 Notification 组件的弹出位置计算。
  • 通过 对 popper.js 的封装 实现了 Tooltip 、Dropdown 、PopConfirm 这一类组件的功能。
  • 在 Dropdown/DropdownItem 以及 Select/Option 、ButtonGroup/Button 、Form/FormItem 这类父子组件嵌套使用的场景,运用 依赖注入的方式来共享上下文信息。
  • 使用 async-validator 来封装表单的校验功能。

除了以上列到的这些还有很多有意思的点,在后面的视频里我都会详细分享的。

这么样是不是干货满满,希望可以帮助到需要提上 vue 水平的小伙伴,我们共同进步。

 评论
评论插件加载失败
正在加载评论插件