Web Components:原生组件化开发新趋势——一个应届生在大厂 offer 和老家之间的技术思考
上周五晚上11点,我合上 MacBook,盯着屏幕上那个刚跑通的 Web Components Demo,突然鼻子一酸。
窗外北京的夜色早已沉寂,合租屋里室友的呼噜声隐隐传来。房租3500,离公司地铁40分钟,工资还没发,但大厂的 offer 已经稳稳躺在邮箱里——月薪22k,base 杭州。而就在三天前,我妈打来电话:“隔壁老张家儿子回县里当公务员了,分了人才公寓,一个月到手也有6000……你要是回来,咱家那套老房子装修一下就能住。”
我苦笑了一下,摸出手机翻了翻自己的简历。上面赫然写着“熟练掌握 React、Vue,了解 Web Components”,可说实话,直到上个月,我对 Web Components 的理解还停留在“哦,那是浏览器原生的玩意儿,没人用吧?”。
事情要从去年十月说起。
那时我还在投第87份简历。秋招像一场没有尽头的马拉松,每天刷 LeetCode、背八股文、模拟面试,头发掉得比 Git commit 还快。终于,一家一线大厂给了我终面机会。
面试官是个戴黑框眼镜的后端大佬(后来才知道他是 P8),聊完算法和系统设计后,他突然问:“你对前端组件化的未来怎么看?除了 React/Vue,有没有关注过更底层的东西?”
我当时脑子嗡的一下。简历上写的都是 React 项目经验,什么 Hooks、Context、状态管理讲得头头是道,但“底层”?我支支吾吾说了句“Web Components 是标准,但生态不成熟……”。
他点点头,没多说什么。但我心里咯噔一下——完了,装懂装过头了。
没想到,两天后 HR 打来电话:“恭喜!我们决定给你 offer。”
我激动得差点把泡面打翻。但谈薪时,HR 说:“因为你是应届生,虽然技术不错,但缺乏对现代前端架构的深度思考,所以薪资在 band 里偏中下。”
那一刻我明白了:会用框架 ≠ 会设计架构。简历上的“熟练掌握”,在真正懂行的人眼里,可能只是“会调 API”。
入职前的空窗期,我决定搞清楚 Web Components 到底是什么。
翻 MDN、看 Google I/O 视频、读 Polymer 团队的博客……我才发现,这玩意儿其实从 2014 年就进了标准,但一直被 React/Vue 的光芒掩盖。大家觉得它“太原始”、“没状态管理”、“不能 JSX”,于是集体绕道。
但当我真正动手写了一个 <user-card> 组件后,震撼了。
<user-card user-id="123"></user-card>
就这么一行,不用 import,不用打包,直接扔进任何页面就能跑。样式封装(Shadow DOM)、属性响应、事件通信——全靠浏览器原生支持。零依赖、跨框架、天然隔离。这不就是我们天天喊的“微前端”理想形态吗?
更让我惊讶的是,连后端同事都开始感兴趣了。我们组有个 Java 老哥,平时只写 Spring Boot,有天突然问我:“你们前端能不能搞个通用组件,我们后台管理系统直接嵌进去?别每次都要你们切页面。”
我一拍大腿:“用 Web Components 啊!”
他愣了三秒:“不是说前端必须用 React 吗?”
我说:“React 是工具,不是枷锁。如果只是展示一个用户信息卡片,为什么非要拉整个 React 生态进来?”
那一刻,我忽然理解了什么叫“技术选型服务于业务,而不是反过来”。
当然,现实没那么美好。
Web Components 没有 React 那样的声明式渲染,没有 Hooks 的逻辑复用,没有 DevTools 调试支持。写复杂交互时,代码确实会变“啰嗦”。比如响应属性变化,得手动写 attributeChangedCallback,不像 React 一个 useState 就搞定。
但换个角度想:简单场景用原生,复杂场景用框架,难道不行吗?
我们最近就在做一个内部工具平台。主应用用 React,但里面嵌入了几个用 Web Components 写的数据可视化小部件。好处立马显现:
- 后端团队可以直接在他们的 JSP 页面里用这些组件,不用学 React;
- 版本升级时,只要接口不变,完全不用通知下游;
- 包体积?每个组件独立打包,只有几 KB。
HR 当初说我“缺乏架构思考”,现在我才真正体会到:好的架构,不是堆砌最新技术,而是为不同问题选择最合适的解法。
回到开头那个夜晚。
我关掉电脑,站在阳台吹风。杭州 offer 和老家公务员的对比表还贴在墙上:
- 杭州:22k × 16,租房4k,孤独,加班多;
- 老家:6k,有房无贷,父母在旁,生活安逸。
技术上,我也在纠结:是继续深耕 React 生态,还是投入精力研究 Web Components 这类“冷门但基础”的技术?
但今晚的 Demo 让我想通了一件事:无论在哪,技术人的核心竞争力,从来不是“会用某个框架”,而是“理解问题本质的能力”。
Web Components 也许不会取代 React,但它提醒我们:浏览器本身就是一个强大的运行时。过度依赖框架,反而会让我们忘记前端最原始的力量——HTML、CSS、JavaScript 三剑合璧。
就像我导师常说的:“React 是拐杖,帮你走得更快;但 Web Standards 是腿,让你站得更稳。”
所以,如果你也在纠结职业选择,或者技术方向,不妨问问自己:
- 我是在追风口,还是在筑地基?
- 我的简历上,除了“熟练使用 XX 框架”,有没有体现对底层原理的理解?
- 如果明天所有框架消失,我还能写出可用的界面吗?
我不是劝你放弃 React 去写原生 Web Components——那不现实。但至少,别让简历上的“组件化”三个字,变成只会调用 npm install 的空洞标签。
写完这篇稿子,已经是凌晨两点。我给妈妈发了条微信:“妈,我可能暂时不回去了。但以后一定常回家。”
她秒回:“好,注意身体。冰箱里饺子还有,回来随时吃。”
眼眶又热了。
或许,人生和架构一样,没有标准答案。但只要每一步都清醒、真诚、有思考,哪怕走慢一点,也终会抵达属于自己的地方。
就像 Web Components 一样——它不喧嚣,不张扬,却始终在那里,默默支撑着 Web 的未来。
而我,也会继续在这条路上,笨拙但坚定地前行。
P.S. 最近我把 Web Components 的实践整理成了一份 mini 项目,放 GitHub 了。如果你也在探索原生组件化,欢迎 star 或提 issue。链接就不贴了(怕被说打广告),搜 “vanilla-web-components-demo” 就能找到。毕竟,技术人的浪漫,就是代码见真章。

评论 0