组件化开发
做项目最怕的是什么?不是需求频繁变更,不是加班到凌晨三点,而是一个小小的按钮样式改动,需要在三十个文件里来回打转。重复的代码到处复制粘贴,改到一半发现少改了一处,然后线上出了 bug,背锅的永远是最苦逼的那个前端。这大概就是所有开发者从“能用就行”走向“架构思维”的必经之痛,而解决这种痛最好的方式,就是组件化开发。
组件化到底拆的是什么?
很多新人容易把组件化误解成“把页面切成几块”。这当然没错,但只说对了一小半。组件化不是单纯地把一个大页面切成几个部分,而是要找到“变”与“不变”的边界——不变的UI骨架固化成结构,会变的数据和交互留给调用方。
举个很直白的例子:一个点赞按钮,它的外形、动画、点击反馈都是“不变”的,但谁点了、点了多少下、是点赞还是取消,这些数据是“变”的。把不变的抽出来封装成组件,把会变的暴露成props和事件,这是组件化最基本的哲学。等你的项目里有几百个这种“点赞按钮”的时候,你就能体感到它的价值了——优化一次UI,全站生效;修复一个bug,再也不用翻遍三十个文件。
从“复制粘贴”到“组合拳”
现代前端框架比如 React 和 Vue 给了我们一套组合式的心智模型。你会发现,组件化的终点不是做一个更复杂的组件,而是做一堆互不干涉的小积木,然后在需要的时候把它们搭到一起。
这就像搭乐高。你不需要一个豪车乐高套装里的每一个零件都是定制的,你需要的是几块基础砖、几个轮子、几扇窗户,然后就能拼出任何你想要的东西。组件化的原则也是类似:越底层的组件越通用、越不具备业务属性,越往上的业务组件越定制化、越绑定具体场景。
如果你一上来就做各种精致又厚重的“业务大组件”,今天为 A 项目写的组件绝不可能明天被 B 项目复用。反之,如果你的组件库里都是最基础的按钮、输入框、弹窗这些原子级组件,那换个项目也许只要改改组合方式就完事。能做到不去硬套组件化、不为了抽象而抽象的人,才是真正理解组件化的那个人。
避坑比跟风更重要
网上各种鼓吹组件化能提升开发效率的好处你听了无数遍,但今天我想泼泼冷水。组件化拆得太细也会出事,特别是当你处于一个中小型项目中。
我见过极端情况:一个 App 顶部的导航栏,被拆分成了五个层级——容器、布局、标题、按钮、图标——每个文件都只有十几行代码,但你要深入五个文件夹才能弄清楚一个最简单的界面逻辑。这种过度包装无异于把一个文件撑破变五十个文件,复杂度不降反升。维护成本反而爆炸。
真正高效的组件化开发需要遵循几个朴素但重要的原则:组件只做一件事、接口要清晰稳定、不轻易删除旧接口、有足够的文档和示例。前三条是对代码的约束,第四条则是对团队的良心。
尤其文档这块,很多人忽略。你以为组件是你写的,所以只有你看得懂,这就是未来无数的“坑”。你换一次工作、休一次长假,组件就变成了传家宝一样的诡异代码。给组件配好演示页面、写清 props 说明、标出常见用法,比写注释还救急。
工程化实践才是分水岭
如果你的技术栈已经切到 Vue 3 或 React 18,组件化开发的工程手段已经非常成熟。组合式 API、Hooks、自定义指令、提供/注入、原子化 CSS、Storybook、设计系统……工具链的丰富程度远超前五年,门槛的本质从“会不会写代码”变成了“会不会组织代码”。
在这个年代,干好了组件化,你的团队能够做到:新需求来时快速拉新页面,老需求改起来不用战战兢兢,公共样式不会越写越烂,设计师换主题只动全局变量。这些听起来平平无奇的体验,其实是组件化给你带来的终极回报——让团队所有人的心智负担降下来。
组件化从来不是某一种技术框架的专属,它本质上是一种简化复杂度的工程思维。从后端 API 的模块化,到前端 UI 的可复用化,甚至延伸到设计稿的规范,这套思想贯穿了整个数字产品研发链路。组件化发展成今天这个样子,是一件被逼出来的结果——产品越来越复杂,人脑容量却很有限。所以与其指望自己记住一切,不如把边界厘清、把逻辑封装、把工具用好。从下一个需求开始,停止复制粘贴,试着写一个能反复使用的组件吧,你会回来感谢自己的。
管理员
黑卡会员