最近在团队里接了一个需求,要把我们常用的几个业务组件封装成一个 AI 可调用的组件库。听起来好像不难,不就是把现有的 Vue 组件整理一下嘛。可真正动手之后我才发现,自己这三年前端经验,在"从零搭建"这件事上,几乎不够用。
我以前用组件库,都是 npm install 一下,看看文档,复制粘贴示例代码,改改 props 就完事了。从来没想过一个组件库从立项到能跑通,中间有那么多我根本没接触过的东西。
接到需求时我有点懵
leader 说,现在 AI 写代码越来越方便,但生成的组件质量参差不齐,经常不符合我们团队的规范。他希望我牵头做一个内部组件库,把我们的设计规范、交互模式、业务逻辑都封装进去,这样 AI 生成代码时可以直接调用这些组件,而不是从零开始写。
我当时心里挺虚的。我平时用 Element Plus、Ant Design 这些成熟库用得挺顺,但让我自己从零搭一个,我连项目结构该怎么设计都不知道。是用 monorepo 还是单包?是用 TypeScript 还是 JavaScript?样式方案选 CSS Modules、Tailwind 还是 CSS-in-JS?这些问题我以前从来没操心过,因为都有现成的。
第一天我坐在电脑前两小时,连 package.json 都没敢建。不是不会敲命令,是不知道该怎么选。每个选项看起来都有道理,但我完全没概念选了之后会带来什么后果。
我开始拆解一个最小单元
后来我想通了,不能一上来就想搞个完美的架构。我先挑了一个最简单的按钮组件,想着把它从零写出来,能跑通测试,能发到 npm,整个流程走一遍再说。
按钮组件看起来简单,但真正写的时候问题一个接一个。首先是 props 设计,我想让它支持 type、size、disabled、loading 这些常见属性,但每个属性的类型该怎么定义?是用字符串字面量还是枚举?默认值该怎么设?这些我以前用现成库的时候根本没想过。
然后是样式隔离。我们的项目里有全局样式污染的问题,我得确保组件库的样式不会被外部覆盖,也不能影响外部。我试了 CSS Modules,发现写起来挺别扭,类名都是哈希值,调试的时候找不到对应元素。后来换成 scoped style,又遇到深层选择器穿透的问题。
最头疼的是打包。我用 Vite 打包,但输出格式选 ESM 还是 CJS?还是两个都要?外部依赖怎么处理?Vue 要不要打进包里?这些问题我查了一整天文档,试了三四种配置,才勉强跑通。
AI 生成的代码让我更迷茫
写组件的过程中,我也试着让 AI 帮忙。我给它描述需求,它确实能生成看起来不错的代码。但问题来了,AI 生成的代码风格和我不一样,有些地方用的 API 我甚至没见过。比如它用 defineComponent 而不是 setup 语法糖,用 inject/provide 而不是 props 传递。
我问它为什么这么写,它说这样更灵活、更易扩展。听起来很有道理,但我心里没底。如果我照单全收,以后维护的时候我看不懂怎么办?如果我坚持自己的写法,是不是又错过了更好的实践?
这种迷茫感最近特别强烈。以前写业务代码,遇到不会的就查文档、问同事,总能找到确定的答案。但现在 AI 给的答案往往不止一个,每个看起来都对,我却不知道该信哪个。更麻烦的是,AI 不会告诉你它为什么选这个方案,它只是给你一段能跑的代码。
我找到了自己的节奏
折腾了一周多,我总算把按钮组件搞定了,能发到内部 npm,也能在项目里正常用。虽然功能很简单,但整个流程我算是摸了一遍。
我总结了几个对我有用的笨办法。第一是先跑通再优化。别一上来就追求完美架构,先写个最简单的版本,能用就行,后面再慢慢改。第二是多看成熟库的源码。我看了 Element Plus 的按钮组件实现,发现自己纠结的很多问题,人家早就有了成熟的解决方案。第三是让 AI 解释而不只是生成。我现在让 AI 写代码时,会要求它每一步都加注释,解释为什么这么写,这样至少我能学到思路,而不只是复制粘贴。
关于 AI 和我的焦虑
说实话,我现在还是挺焦虑的。AI 进化太快了,今天我还觉得组件库是个技术活,明天可能 AI 一句话就能生成一个完整的库。那我这一个月的折腾,算什么呢?
但换个角度想,如果我不亲手踩这些坑,我可能永远不知道一个组件库背后有多少细节。AI 能生成代码,但它不知道我们团队的设计规范是什么,不知道我们的业务场景有哪些特殊需求,更不知道为什么某个看似简单的选择,会导致后面一系列问题。
我现在的心态是,先把基础打牢,再用 AI 提效。如果基础不牢,AI 生成的东西我都不敢用,那才是真的尴尬。就像这次搭组件库,如果我连打包配置都看不懂,AI 生成的代码我怎么敢往生产环境放?
给同样在摸索的你
如果你也在做类似的事,或者也在被 AI 搞得有点迷茫,我想说这很正常。技术迭代太快,谁都有跟不上趟的时候。我现在的做法是,每周固定花几个小时学一个新东西,不求多,就求搞懂。这周是组件库,下周可能是状态管理,再下周可能是性能优化。
不用急着成为专家,先把一个点吃透,比泛泛地学十个点有用得多。而且你会发现,很多东西底层是相通的,这个点搞懂了,下一个点上手就快多了。
我也是最近才想明白,AI 时代,人的价值可能不在于写代码的速度,而在于判断代码质量的能力、理解业务需求的能力、以及解决复杂问题的能力。这些能力,AI 暂时还替代不了,但也需要我们自己去积累。
如果你也写前端,也被 AI 卷得有点焦虑,咱们可以聊聊。互相分享一下踩坑经验,比一个人闷头学强多了。