
最近几个月,我在各种技术分享、掘金讨论、技术群里都听到一个越来越频繁的声音:"咱们这个项目要不试试不用框架?"
最开始我当成笑话,直到我看到了真实的对比数据:某个项目的新版本,放弃了之前的框架,只用Web Components + 原生JS重写。结果不是技术博主的吹牛,而是实实在在的指标——首屏快了5倍,包体积小了20倍,新来的实习生三天就上手,不需要学框架。
这让我开始思考一个问题:我们是不是把框架用反了?
这不是说React或Vue不好。而是,当这么多实际项目都在偷偷摸摸地做这件事的时候,我们是该停下来想想,2026年的前端技术版图,会不会真的要改变了?
想象一个场景:你点开一个购物网站,什么都没看到,JS已经下载了300KB。再想象一个五年前的网站,整个体积才这么大。
咱们来看看2025年的真实数据:
框架包体积对比(单位:KB)
┌─────────────────┬─────────┐
│ Angular │ 1200 │
│ React │ 300 │
│ Vue │ 100 │
│ Web Components│ <10 │
└─────────────────┴─────────┘
这不仅仅是个数字游戏。对于市场来说,有特殊意义:
在三四线城市,用户用的可能还是2019年的千元机。一个300KB的React应用,配合两三个库,轻轻松松就是1MB+。这意味着什么?
如果你在某电商做过AB测试,应该知道每增加100毫秒延迟,转化率就下降1-2%。对于日均订单量百万级的平台,这就是数千万的损失。
而Web Components呢?它的包体积本质上就是零额外开销——它们就是浏览器本身的能力,就像HTML、CSS、JavaScript一样,免费赠送。
这是个关键的转折点,2024-2025年发生了什么:
Web Components兼容性演变
2015年 ──→ 2020年 ──→ 2024年 ──→ 2025年
┌─────┐ ┌──────┐ ┌──────┐ ┌──────┐
│Chrome│ │+FF │ │+Edge │ │+Safari
│OK │ │有限 │ │有限 │ │完美✓
└─────┘ └──────┘ └──────┘ └──────┘
需要 需要 大部分 无需
Polyfill 兼容 没问题 任何Polyfill
关键信息:从2025年开始,所有主流浏览器(Chrome、Firefox、Safari、Edge)都原生支持Web Components标准,不再需要任何补丁或Polyfill。
这意味着什么?意味着那个"Web Components还不成熟"的借口,终于死了。
我问了不少开发者朋友,听到最多的一个抱怨是这样的:
"我们的项目用Angular写的,现在要升级,但每次大版本更新都是灾难。代码改不完,有的功能还得重写。我们有十个人的团队,其中七八个人在处理框架问题,真正开发新功能的没几个。"
这是个普遍现象。我在掘金、V2EX、各个开发者群里都看到过这样的讨论。
另一个朋友说:
"React太灵活了,反而成了问题。自由度高意味着每个项目的写法都不一样,代码风格五花八门。新人来了要两周才能适应,这还是运气好的情况。"
或者Vue的问题:
"响应式这套东西我现在还是有点蒙,ref什么时候要用,什么时候不用。调试的时候有时候数据明明改了,视图就是不更新。"
这些话听起来是不是很熟悉?如果你经历过,说明不是个案。
我想讲一个更具体的情况(虽然我不能说具体是哪家公司,但这种情况很普遍):
有个项目三年前用一个框架搭建,当时这个框架是最优选择。但现在:
时间线上的尴尬
第一年 ✓ 一切顺利,快速迭代
✓ 用上了最新特性
第二年 △ 框架推出新版本,有breaking changes
△ 某些依赖库不兼容
△ 花了两个月升级和改代码
第三年 ✗ 又要升级了...
✗ 老版本即将停止支持
✗ 团队人员更换,新来的人学框架要一个月
✗ 还有堆积的技术债,没时间处理
这不是哪家大厂独有的问题,而是整个行业都在经历的问题。你的项目可能也在这个循环里。
有人问了个好问题:那如果一开始不选框架呢?
有些项目尝试过这个路。最简单的指标对比:
同样功能的项目
维度 传统框架方案 Web Components方案
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
首屏加载时间 3-5秒 0.5-1秒
打包体积 800KB-1.2MB 80-150KB
新人上手周期 3-4周 3-5天
代码改动时的心智负担 中等-高 低
长期维护成本 持续上升 相对平稳
最有趣的是最后两个指标。
一个Web Components项目,因为逻辑简单,新来的人快速上手。五年后,这个项目可能还是用同样的方式在跑。
而框架项目呢?每年都有新的"最佳实践",每个版本都有breaking changes。你的技术债像滚雪球一样越滚越大。
这就是我想说的:框架不是问题,但我们用框架的方式出问题了。
想象框架就像一个"运输系统":
传统框架的运输流程
代码 → 编译器(Babel) → 打包器(Webpack) → 框架运行时 → Virtual DOM → 最终DOM
↑ ↑ ↑
需要服务器 需要Node.js环境 额外JavaScript 性能损耗
编译代码 编译打包环节 代码体积 十几ms延迟
而Web Components:
Web Components的运输流程
你的代码 → 浏览器 → 直接渲染
↑ ↑ ↑
即写即得 零开销 3ms级别
这个差别在哪里体现?看个真实例子:
一个产品卡片组件
React写法:
// 需要通过npm安装
import React from'react';
import { Card } from'@mui/material';
exportfunction ProductCard({ name, price, image }) {
const [liked, setLiked] = React.useState(false);
return (
<Card>
<img src={image} alt={name} />
<h3>{name}</h3>
<p>¥{price}</p>
<button onClick={() => setLiked(!liked)}>
{liked ? '已收藏' : '收藏'}
</button>
</Card>
);
}
需要打包,需要框架,需要状态管理。
Web Components写法:
// 就是一个自定义标签
class ProductCard extends HTMLElement {
connectedCallback() {
const name = this.getAttribute('name');
const price = this.getAttribute('price');
const image = this.getAttribute('image');
this.innerHTML = `
<div class="card">
<img src="${image}" alt="${name}" />
<h3>${name}</h3>
<p>¥${price}</p>
<button>收藏</button>
</div>
`;
}
}
customElements.define('product-card', ProductCard);
使用:
<!-- 在任何地方,任何框架,甚至没有框架 -->
<product-card
name="JavaScript完全指南"
price="99.99"
image="/guide.jpg">
</product-card>
关键区别在这:这个Web Components标签可以在React里用、Vue里用、Angular里用,甚至在一个纯HTML页面里用。它就是标准,不是私产。
我们来算一笔账。假设一个电商网站,日均访问100万:
成本对比(假设)
React方案 Web Components方案
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
包体积 1MB 100KB (×10倍)
日均流量 100TB 10TB (×10倍)
CDN成本/月 5万 5千
转化率 2.5% 3.2% (快速加载效果)
新增收入/月 - +100万
服务器成本/月 3万 3千
总成本节省/年 约800万 ← 实实在在的钱
在国内,这个数据尤其关键。网费、电费、带宽这些成本,是全球最敏感的。为什么大平台都在抠性能?因为他们算账。
这个我想讲得更直白一些:
你最讨厌React的什么?
某知乎高赞说:
"useEffect依赖数组的诡异bug,让我在线上追了两周。"
你最讨厌Vue的什么?
"响应式系统的黑魔法,导致我根本搞不懂什么时候该用ref,什么时候不该。"
你最讨厌Angular的什么?
"装饰器、依赖注入、RxJS……学这些的时间,比学实际业务的时间还多。"
而Web Components呢?
这就是普通的JavaScript类。没有魔法,没有黑盒。你看到的,就是你得到的。
一个初中级开发者,如果没学过任何框架,给他Web Components的代码,他能看懂。 一个新人,入职第一天就能理解,因为没有特殊概念。 一个十年经验的老开发,也不会因为框架更新而瓦解掉过去的知识。
这就是可维护性。而在创业公司里,可维护性意味着什么?意味着你换人的时候,新来的人不用花一个月学框架,只需要三天搞懂业务。
这个说法在2025年已经过时了。为什么?
OpenWC 这个项目,已经用Web Components写出了非常复杂的组件库。Lit 这个库(来自Google),给Web Components加了最小的糖衣(只有4KB),让你写复杂应用跟框架一样顺。Shoelace 这个设计系统,全用Web Components,都被企业级应用采用了。
那Web Components真的天花板在哪呢?
状态管理和跨组件通信。
这是唯一的"不如框架"的地方。React有Redux、Zustand,Vue有Pinia。Web Components怎么办?
答案:在2025年,这也不算问题了。
因为浏览器实现了一个东西叫 State Management via Events + LocalStorage + Server State。简单说:
对于80%的应用,这足够了。
那20%真的很复杂的?直接用一个状态管理库(比如 TanStack Query),体积才200KB,加上Web Components也就210KB,比单独的React还小。
基于目前的趋势,我做三个预测:
预测1:新项目的框架选择会出现分化
未来的技术选型分布(我的预测)
应用类型 框架选择
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
简单官网、营销页 Web Components (40%)
电商、内容平台 Web Components (35%)
大型后台系统 React (70%)
快速原型/创业 Vue (80%)
企业级系统 Angular (85%)
设计系统/组件库 Web Components (90%)
换句话说:中小型应用和团队,会大规模转向Web Components。大厂和复杂系统,仍然用框架。
预测2:组件库会两极分化
有些组件库(比如基础UI组件)会被Web Components标准化。类似Shoelace这样的开源组件库,会成为行业标准,就像Bootstrap一样。
而复杂的业务组件库(某电商的推荐组件、某金融的风控组件),仍然是框架相关的。
预测3:设计系统的标准化时代会来临
有些大公司的设计系统(他们内部或开源的),会考虑提供Web Components版本。为什么?因为这样可以让设计系统跨框架、跨平台使用。一套组件,到处可用。
这不是说他们会放弃框架版本,而是说,Web Components版本会变成一个标准选项。就像现在很多库既提供Vue版本也提供React版本一样。
这是一个值得思考的问题,而不是一个有标准答案的问题。
对初级开发者来说的真实困境是:现在学React还是学Web Components?答案可能是都要学,但学的顺序和深度应该因人而异。有的人可能发现,学好基础JavaScript + Web Components,比花三个月深入React框架更有价值。
对中级开发者来说,现在是一个有趣的时刻。因为你有经验,可以客观地评估:我的下一个项目,真的需要框架吗?如果你试过不用框架,你会发现一种"终于不用绕那么多弯子"的感觉。
对架构师来说,这不只是技术选择的问题,而是:我们应该在什么时候引入复杂度?是一开始就用最重的工具,还是按需扩展?
如果你在做技术决策,最重要的问题可能是:我们的团队、项目规模、维护周期,是否真的适合当前选的框架?有没有机会用更轻的解决方案,把节省下来的时间和资源用在真正的业务上?
很多人现在纠结的是:"Web Components成熟吗?生态怎么样?"
我觉得这个问题问反了。问题不应该是"Web Components有没有一个完美的生态",而应该是"我需要那么完美的生态吗?"
React能做的事,Web Components可能只能做80%。但剩下的20%,你真的需要吗?或者说,你是在解决真实问题,还是在追求框架提供的"完美体验"?
我从不认为Web Components会"打败"React。那是个伪命题。
就像汽车没有打败火车,飞机没有打败汽车一样。
React在复杂的、实时交互的、需要复杂状态管理的大型应用里,仍然是最优选择。Vue在快速开发、学习曲线上,仍然很强。Angular在超大型企业系统里,仍然有价值。
但这十年,框架过度扩张了。我们用React写一个文档网站,用Vue写一个营销页面,用Angular维护一个已经稳定的后台系统。这就像用直升机送外卖——能用,但不值得。
Web Components的崛起,本质上是技术的回归。回归到用适当的工具解决适当的问题。
十年前,我们不得不用jQuery,因为浏览器API太弱。 五年前,我们不得不用React,因为浏览器还不支持Web Components。 现在,浏览器终于足够强大了。
我们回到了原点,但我们更聪明了。
如果你现在开始一个新项目,经理问你:"用什么技术栈?"
在2026年,你还会脑子一热就回答"React"或"Vue"吗?
还是会停下来想一想:这个项目真的需要他们吗?或者有没有可能,用更简单的方式,得到更好的结果?
这不是Web Components vs 框架的问题。这是我们有没有认真思考工程师应该怎样用好手中的工具的问题。
《前端达人》专注深度技术分析和前沿思考。如果这篇文章对你有启发,欢迎:
👍 点赞 — 让更多开发者看到这个观点
💬 评论 — 你的想法同样重要,Web Components是未来吗?你的团队在用吗?
🔄 分享 — 推荐给身边也在思考技术选型的朋友
⭐ 关注《前端达人》 — 我们一起探索前端的未来
P.S. 如果你正在经历框架疲劳,或者在某个项目中纠结选什么技术栈,我很想听听你的故事。在评论区分享吧,咱们一起讨论。
#Web前端 #WebComponents #技术选型 #框架对比 #前端性能 #2026前端趋势