前端技术演化史 · 共 106 篇

前端这些年

从浏览器之争到 AI 时代,梳理每一次框架更替、工具兴替背后的因果——为什么是它,为什么在那时候。

从这里开始

完整索引 · Map of Content

5 时代 · 15 专题 · 9 深度 · 6 图谱
进入 →

或者,浏览全部

时代叙事
深度专题

为什么pnpm解决了依赖问题

pnpm 解决依赖问题的关键,在于它看穿了一个被所有人接受的"假修复":npm/yarn 的扁平化 node_modules,用"幽灵依赖"和"磁盘浪费"换来了"消除嵌套地狱"——这只是把一个…

深度专题 6 分钟

为什么React战胜了AngularJS

React 战胜 AngularJS,不是因为它"更好",而是因为它押对了一次范式转变:从"双向绑定 + 命令式 DOM 操作"转向"单向数据流 + 声明式 UI"。AngularJS 的失败…

深度专题 7 分钟

为什么Vite能取代Webpack

Vite 撬动 Webpack 的支点,是一次教科书级的第一性原理操作:它没有去"把打包做得更快",而是重新质疑了一个被默认了十年的前提——"开发时为什么要打包?" 当浏览器原生支持了 ES-…

深度专题 7 分钟

为什么Vue在中国崛起

Vue 在中国的崛起,不是"因为作者是华人"这么简单的民族情绪故事,而是一次"工具特性"与"市场结构"的精准共振:Vue 的渐进式、低门槛、官方中文文档,恰好匹配了 2015 年前后中国前端爆…

深度专题 7 分钟

为什么WebComponents理念先进却没赢

Web Components 在每一条第一性原则上都赢了 React/Vue——它是 W3C 标准、跨框架、零运行时、永久兼容,理念近乎完美。但它没能成为应用开发的默认组件模型。原因不是它不够…

深度专题 11 分钟

为什么Webpack统治了十年

Webpack 的十年统治,不是因为它快、也不是因为它简单(恰恰相反,它慢且复杂),而是因为它提供了一个在当时无人能及的统一抽象——"一切皆模块"——并以 loader + plugin 的无…

深度专题 6 分钟

未来5到10年前端发展方向

未来 5–10 年的前端,会沿着一条清晰的主线展开:抽象对象从"代码"上移到"意图",而代码生成、运行时优化、跨端边界则全面"下沉"为自动化的基础设施。具体表现为七股相互交织的力量:① 编译时…

深度专题 8 分钟

AI编程会让前端框架收敛吗

这是一个伪二元问题,答案不是"会"或"不会",而是要分层回答:在语法/写法层,AI 大概率会加速向主流写法收敛(马太效应);但在运行时/范式层,框架解决的是 AI 无法回避的真实工程问题(响应…

深度专题 7 分钟

Edge会取代传统SSR吗

这是一个问错了的问题。Edge 不会"取代"传统的中心化 SSR,因为两者不在同一个竞争维度上——Edge 优化的是计算的位置(贴近用户),而很多 SSR 场景的瓶颈是数据的位置(贴近数据库)…

深度专题 11 分钟
框架

前端框架演进史

前端框架的整部历史,是一场"谁来负责把状态同步到 DOM"的责任转移史:从开发者手动操作(jQuery),到框架运行时托管(AngularJS/React/Vue),再到编译器在构建期就把活干…

框架 4 分钟

Angular-2+

2016 年,Google 做了一个前端史上最有争议的决定:把已经封神的 AngularJS 推倒重来,做一个同名却完全不兼容的新框架。它赌上了 TypeScript 和 RxJS,做成了一套…

框架 4 分钟

AngularJS

AngularJS 用双向数据绑定这个"魔法",一度被奉为前端的未来——数据变 UI 自动变,UI 变数据也自动变。但支撑这个魔法的脏检查(dirty checking)机制,在大型应用里会让…

框架 4 分钟

Backbone

Backbone 是前端从"页面制作"走向"软件工程"的第一声啼哭。它第一个把 MVC 架构带进浏览器,给混沌的 jQuery 代码立下规矩——但它只给了骨架(Backbone,正如其名),血…

框架 3 分钟

jQuery

jQuery 不是框架,而是一层抹平浏览器差异的薄薄的兼容层。它用一个 $() 拯救了一代开发者,却也因为它的"命令式"本质,亲手为整个范式刨好了坟墓。它是前端史上最成功、也最早被范式淘汰的工…

框架 3 分钟

React

React 用一句话重写了前端的"牛顿第一定律":UI = f(state)。你不再操作 DOM,只声明"给定这个状态,UI 应该长什么样",剩下的交给虚拟 DOM。这个范式如此根本,以至于十…

框架 4 分钟

Svelte

Svelte 问了一个所有人都默认跳过的问题:"虚拟 DOM 真的有必要吗?" 它的答案是把框架的工作从运行时搬到编译时——你写的组件被编译成精准操作 DOM 的原生 JS,运行时几乎不带框架…

框架 4 分钟

Vue

Vue 是一场精妙的"集大成"与"做减法":它取 AngularJS 的数据绑定 + React 的组件化,扔掉两者的心智负担,做成一条任何人都能从 <script 标签起步的平缓坡道。它证明…

框架 3 分钟
状态管理
UI组件与设计系统
CSS与样式

布局演进史

CSS 诞生时根本没有布局系统。于是前端用了二十年时间,把一个个"本不该用来布局的工具"(表格、浮动、行内块)硬掰成布局工具,每一代都在为上一代的副作用还债——直到 Flexbox 和 Gri…

CSS 8 分钟

原子化CSS

原子化 CSS 是一次"看似倒退、实则升维"的反叛。它把样式拆成一个个最小的、单一职责的 utility 类(flex、pt-4、text-center),让你像搭乐高一样在 HTML 里直接…

CSS 5 分钟

CSS-in-JS

当前端进入组件化时代,样式遇到一个根本性的存在主义问题:样式到底属于谁? 全局 CSS 说它属于整个页面,但组件说它属于"我"。CSS-in-JS 给出了一个激进的答案——让样式和组件同生共死…

CSS 5 分钟

CSS方法论

CSS 的选择器天生是全局的——这在一篇文档里无害,在一个百人团队的大型应用里却是原罪。在没有任何技术手段隔离样式的年代,前端只能靠纯粹的人类约定来对抗混乱:用命名规范、分层架构、组合思想来"…

CSS 5 分钟

CSS演进史

CSS 本是为"给文档排版"而生的——它的设计假设是一篇有标题、段落、链接的静态文章。可历史把它推上了完全不同的战场:它被迫去承担应用级的复杂布局和大型团队的工程化协作。CSS 三十年的演进史…

CSS 5 分钟

CSS预处理器

原生 CSS 长期是一门"残废"的语言:没有变量、没有嵌套、没有函数、没有模块。开发者忍无可忍,干脆在 CSS 之上发明了一整套编程语言,编译成 CSS 再交给浏览器。预处理器用一个"编译步骤…

CSS 5 分钟
JavaScript语言

为什么JavaScript有这么多坑

JS 的坑不是 Brendan Eich 不会设计语言,而是"10 天交付 + 永不破坏向后兼容"这两个约束的乘积。理解了这两个约束,你就理解了 JS 几乎所有的怪异之处。

JavaScript 3 分钟

ECMAScript演进史

一门10 天赶制、为蹭 Java 热度而生的"玩具语言",被时代推上了世界第一编程语言的宝座。它的整部演进史,就是一场"如何在永不破坏旧网页的前提下,把仓促设计修补成现代语言"的漫长工程——其…

JavaScript 5 分钟

ES-Modules

ESM 的故事,是 JavaScript 用二十年时间补上"它从娘胎里就缺失的模块系统"的故事。它平息了 CommonJS vs AMD 的混战、一统江湖,但真正的革命在于它的一个属性——静态…

JavaScript 4 分钟

ES3

ES3 是 JavaScript 的"地基浇筑"版本:它本身没有任何耀眼的创新,但它第一次足够完整、又恰好被 IE6 锁死了整整十年——于是它成了 jQuery 这代库赖以生存的"最大公约数"…

JavaScript 3 分钟

ES5

ES5 是 ES4 流产废墟上长出的"务实主义之花":它放弃了一切语法革命的野心,只老老实实补齐工程师每天都在用的工具。但它埋下的一颗不起眼的种子——Object.defineProperty…

JavaScript 4 分钟

ES6-ES2015

ES6 是 JavaScript 历史的楚河汉界:它一次性补齐了一门现代语言该有的一切(class、let/const、箭头函数、Promise、模块、解构),把"古典 JS"和"现代 JS"…

JavaScript 3 分钟
工程化

前端工程化演进史

前端工程化的整部历史,就是两条线的螺旋上升:一条是模块化(代码如何被组织、组合、复用),另一条是开发体验(DX)(把代码变成能跑的产物,这个过程能不能快、能不能简单)。当 JS 工具自身的性能…

工程化 4 分钟

Babel

Babel 是整个前端生态敢于"激进使用未来语法"的安全网。它把 ES6+/JSX/TS 这些老浏览器不认的代码,通过 AST 转换"翻译"成老浏览器能跑的 ES5。它让语言进化和浏览器兼容解…

工程化 3 分钟

Browserify

它做了一件石破天惊的事:让 Node.js 的 require() 跑在浏览器里。第一次让前端能像后端一样用 CommonJS 模块组织代码,直接复用 npm 上的海量包。它是模块打包思想的开…

工程化 3 分钟

Grunt-Gulp-任务流时代

它们是前端自动化的"第一代工人":把压缩、拼接、加 hash、起服务器这些重复手工活交给脚本。但它们只会"按顺序跑任务",不理解模块之间的依赖关系——这个先天缺陷,注定它们会被打包器取代。

工程化 3 分钟

npm-Yarn-pnpm-包管理

这是一部"如何安放 node_modules"的史诗。npm 从嵌套走向扁平化,顺手制造了"幽灵依赖"这个幽灵;Yarn 补上了确定性(lockfile)并尝试激进的 PnP;pnpm 用硬链…

工程化 3 分钟

Rollup

当 Webpack 在做"应用打包"时,Rollup 选择做"库打包"。它把 ES-Modules 当作一等公民,推广了 tree-shaking 概念,产出干净、无运行时噪音的代码。它是库作…

工程化 3 分钟

Turbopack

这是 Webpack 作者 Tobias Koppers 的"自我革命":用 Rust 重写一个打包器,作为 Webpack 的接班人。核心武器是增量计算(incremental comput…

工程化 3 分钟

TypeScript

它做了一件看似不可能的事:给一门动态语言加上渐进式的静态类型,还不破坏现有代码。靠"结构化类型 + 可编译回 JS + 顶级 IDE 体验",TypeScript 从"可选"变成了 2018 …

工程化 3 分钟

Vite

Vite 的成功来自一次第一性原理的发问:"为什么开发时一定要先打包?" 当现代浏览器原生支持了 ES-Modules,这个前提就不再成立了。Vite 抛弃 dev 打包,实现 no-bund…

工程化 3 分钟

Webpack

一句话概括它的世界观:"一切皆模块"——连 CSS、图片、字体都是模块。靠 loader + plugin 两套可扩展机制,加上 code splitting 和 HMR,Webpack 统治…

工程化 4 分钟
包管理与Monorepo
运行时
渲染模式
跨端与全栈

跨端与全栈演进史

这是一部前端的领土扩张史。前端没有满足于浏览器这块原生疆域,而是带着同一套 JS/TS 技能栈,先后向移动端、桌面端、小程序、服务端四个方向殖民。母题只有一句:用一种语言、一种心智、一支团队,…

跨端 4 分钟

全栈框架与BFF

如果说跨端是前端"向旁边长",全栈化就是前端"向下扎根"。从 Node.js 让 JS 第一次能写后端,到元框架把 API 端点和组件塞进同一个项目,再到 tRPC 用 TypeScript …

全栈 6 分钟

小程序生态

小程序是跨端史里中国独有的一个分支物种。它不是技术社区自下而上长出来的,而是超级 App 自上而下定义的——平台说"你要在我的地盘上做应用,就得用我规定的双线程模型、受限 WebView 和私…

跨端 5 分钟

Electron与桌面端

Electron 是前端最"暴力"的一次扩张:它不抹平桌面平台的差异,而是直接把整个浏览器内核 + Node 运行时一起打包进每个 App。代价是"每个 App 都背着一个浏览器",收益是"会…

跨端 5 分钟

React-Native与移动跨端

移动跨端是前端的第一次远征。前端盯着 iOS/Android 这两块原生疆域,只有一个执念:别让我用两种语言、两支团队、写两遍同一个 App。 从 WebView 套壳到 React Nati…

跨端 6 分钟

RSC与前后端边界模糊

RSC(React Server Components)是整部"跨端与全栈"史的当代终点。过去前后端的边界是一次网络请求——显眼、可见、在 Network 面板里。RSC 把这条边界搬进了组件…

全栈 5 分钟
Web平台能力
浏览器

浏览器演进史

浏览器是前端唯一的"操作系统"。它的三十年史,本质是两次惨烈战争 + 一次大一统——能力从厂商手里的私货,变成 W3C/TC39 的公共标准,最后渲染引擎收敛到几乎只剩一家。赢家定义了 Web…

浏览器 3 分钟

Chrome

Chrome 不只是赢了第二次浏览器战争,它重新定义了浏览器是什么——多进程沙箱 + V8 JIT + 自动静默更新。而 V8 这颗心脏一旦跑出浏览器,就催生了 Node.js,解锁了前端工程…

浏览器 4 分钟

Chromium-引擎之争

浏览器战争的终局不是某个品牌赢了,而是渲染引擎收敛到了几乎只剩一家。Blink 实质一统,WebKit 靠 iOS 政策守住一极,Gecko 是最后的独立孤岛。兼容性地狱终于结束了——代价是 …

浏览器 5 分钟

IE盒模型之争

同一个 width,IE 和标准浏览器算出来的宽度不一样——这个看似微小的分歧,折磨了整整一代前端工程师,也成了"没有标准的野蛮生长会留下多深的债"的最佳注脚。

浏览器 2 分钟

Internet Explorer

它靠捆绑赢得了第一次浏览器战争,又因为"赢了就躺平"把整个 Web 拖进五年停滞。但它在 IE5 里随手塞进的一个 API——XMLHttpRequest——竟意外引爆了下一个时代。IE 是前…

浏览器 3 分钟

Mozilla-Firefox

它是 Netscape 战败后从开源灰烬里飞出的复仇者,凭"轻、快、尊重标准"在 IE6 的停滞期撕开缺口,重新点燃了第二次浏览器战争。今天它份额萎缩,却成了对抗 Chromium 一统的最后…

浏览器 4 分钟

Netscape Navigator

它是把 Web 带给全人类的开拓者,是 JavaScript 的诞生地,也是第一次浏览器战争里赢了产品、输了渠道的悲情英雄。它死了,但它的两个遗产——JS 和开源的 Mozilla——定义了之…

浏览器 4 分钟
部署与托管
测试体系
AI时代
图谱
附录