🌐 2005–2013 Ajax 时代
一句话定性
一个被遗忘了六年的 API(
XMLHttpRequest),让网页第一次拥有了”局部更新”的能力。网页从”文档”变成了”应用”——但操作 DOM 的方式还停留在石器时代,于是 jQuery 成了整整一代人的救命稻草。
一、背景:行业现状
第一次浏览器战争结束,IE6 占据 90%+ 市场。表面平静,实则暗流涌动:
- 2004 年 Gmail 上线:一个不刷新页面就能收发邮件、即时搜索的网页邮箱,震惊业界。
- 2005 年 Google Maps 上线:可以拖拽、无缝缩放的地图,完全颠覆了”网页=静态文档”的认知。
- 2005 年 2 月,Jesse James Garrett 写了一篇文章,给这种”异步、局部更新”的技术组合起了个名字:AJAX(Asynchronous JavaScript and XML)。
一个新词,点燃了整个行业。所有人都想做出”像桌面软件一样”的网页。同时,Firefox(2004)借 IE6 停滞之机崛起,第二次浏览器战争开打,2008 年 Chrome 带着 V8 引擎入场,把 JS 性能推上新台阶。
二、核心痛点:开发者面临什么
能力解锁了,但工具还在中世纪
- 原生
XMLHttpRequest极其难用:要写一堆readyState状态判断,还要为 IE 和标准浏览器写两套创建逻辑。- DOM 操作又啰嗦又跨浏览器不兼容:
getElementById/attachEvent(IE)vsaddEventListener(标准),选择 DOM 元素没有统一方式。- JS 代码迅速膨胀成”意大利面条”:交互一复杂,就是满屏的回调和 DOM 拼接字符串,没有模块、没有结构。
- 没有依赖管理:引入库靠
<script>标签手动拼,顺序错了就崩,全局命名空间互相污染。- CSS 动画/特效全靠 JS 手写:还要处理各浏览器的兼容写法。
核心矛盾:网页要做的事(富交互)已经追上了桌面软件,但写网页的方式(手撸 DOM + 兼容性 if-else)还原始得令人发指。
三、代表技术
| 技术 | 角色 | 专题 |
|---|---|---|
| Ajax / XMLHttpRequest | 时代的引爆点:异步局部更新 | 渲染模式演进史 |
| jQuery (2006) | 时代的王者:$ 抹平一切 | jQuery |
| ES5 (2009) | 语言现代化的奠基(strict mode、JSON、数组方法) | ES5 |
| Chrome + V8 (2008) | JS 性能革命,让大型 JS 应用成为可能 | Chrome |
| Backbone (2010) | 第一个把 MVC 引入前端的尝试 | Backbone |
| Prototype.js / MooTools / Dojo | jQuery 的竞争者(后被淘汰) | — |
| JSON (取代 XML) | Ajax 里的 “X” 其实很快被 JSON 取代 | — |
四、为什么诞生:技术出现的原因
- 为什么是 jQuery 赢了? 因为它精准命中了那个时代唯一最痛的点:用一个
$()选择器(借鉴 CSS 选择器语法)+ 链式调用,同时解决了 DOM 选择、操作、事件、Ajax、动画的跨浏览器兼容问题。它的口号”write less, do more”是开发者的福音。Slogan 背后是一种哲学:不改变 Web 本身,只做一层兼容性的薄抹平层。 - 为什么 Ajax 现在才爆发?
XMLHttpRequest1999 年就在 IE5 里了,但当时:① 没人想到这样用;② JS 引擎太慢撑不起复杂应用;③ Google 用 Gmail/Maps 做出了示范,证明了商业价值。技术的爆发往往不是发明的时刻,而是被”正确使用”的时刻。 - 为什么 Backbone 出现? 因为 jQuery 解决了”操作 DOM”,但没解决”组织代码”。当应用大到一定程度,jQuery 写出来的就是一团乱麻——数据和视图混在一起,没人知道改一个地方会影响哪里。Backbone 引入 Model/View/Collection,第一次尝试给前端代码立规矩。
- 为什么 Chrome + V8 重要? V8 用 JIT 编译把 JS 执行速度提升了一个数量级。这件事的二阶效应极其深远:它让”用 JS 写大型应用”从奢望变成现实,也直接让 Node.js(2009,基于 V8)成为可能——JS 第一次跑出了浏览器。
五、解决了什么:具体价值
- jQuery 让前端开发的门槛暴跌:不懂浏览器兼容细节的人也能写出能跑的交互。它的普及程度一度高到”jQuery 几乎等于 JavaScript”。
- Ajax 模式重新定义了 Web 的可能性:单页局部刷新、即时搜索、无限滚动、富表单——现代 Web 应用的交互范式在这个时代成型。
- Backbone 把”前端工程”的概念第一次摆上台面:数据驱动视图、关注点分离——这些理念是后来所有框架的思想源头。
- V8 引擎把性能瓶颈打开,为下一个时代的重型 SPA 框架铺好了高速公路。
六、带来的新问题:技术债与缺陷
jQuery 的成功,正是它衰落的种子
- 命令式 DOM 操作不可扩展:jQuery 是”手把手告诉浏览器怎么改 DOM”(命令式)。应用一复杂,你要手动同步”数据”和”视图”——改了数据要记得改 DOM,改了 DOM 又要记得改数据。状态和视图的同步成了 bug 的最大来源。
- 没有真正的组件化:jQuery 插件本质是函数,无法封装”状态 + 视图 + 行为”为可复用单元。
- Backbone 的”双向同步”要手写:它给了 MVC 骨架,但 View 怎么响应 Model 变化,还得自己写
listenTo+ 重渲染逻辑,模板和数据的绑定不是自动的。- 依赖管理依然原始:CommonJS / AMD(RequireJS)开始出现,但浏览器原生不支持模块,要靠工具或运行时 loader 凑合。
- 状态散落各处:数据可能在 DOM 的
data-*属性里、在某个全局变量里、在某个闭包里——没有单一数据源。
核心新矛盾浮现:当应用足够复杂,“手动保持数据和 DOM 同步”会成为压垮开发者的最后一根稻草。
七、对下一代技术的影响:因果链
jQuery 命令式操作 DOM → 应用一大就成"意大利面" → 状态/视图同步成灾难
│
↓
开发者开始渴望:"我只想描述 UI 长什么样,别让我手动改 DOM"(声明式)
│
├──► AngularJS(2010) 提出"双向数据绑定":数据变,视图自动变 → 一度封神
│
└──► React(2013) 提出"UI = f(state)" + 虚拟 DOM → 重新定义一切
│
↓
进入 ►► [[2013-2018 SPA时代]]
同时:
V8 引擎(2008) ──► Node.js(2009) ──► 前端工程化、构建工具的整个时代成为可能
Backbone 的 MVC ──► 启发了 Angular/Ember 的设计
Chrome 崛起 ──► 第二次浏览器战争,IE 走向衰亡
📊 本时代技术因果图
这张图聚焦本时代内部:谁因为谁的什么痛点而出现
flowchart TD xhr["XMLHttpRequest<br/>(1999 埋下, 被遗忘 6 年)"] gmail["Gmail 2004 / Google Maps 2005"] ajax["Ajax 2005 命名"] webapp["网页变成应用"] dompain["DOM 难用 + 跨浏览器不兼容"] jquery["jQuery 2006<br/>$ + 链式调用"] spaghetti["代码膨胀成意大利面<br/>无模块 / 无结构"] backbone["Backbone 2010 (MVC)"] v8["Chrome + V8 2008"] fastjs["JS 执行快一个量级"] node["Node.js 2009"] imperative["jQuery 命令式操作 DOM"] xhr -->|"被 Google 正确使用, 证明商业价值"| gmail gmail -->|"网页能像桌面软件不刷新更新"| ajax ajax -->|"富交互范式成型"| webapp dompain -->|"write less, do more 的薄抹平层"| jquery ajax -->|"也需要顺手的异步封装"| jquery webapp -->|"应用变大"| spaghetti spaghetti -->|"jQuery 不解决组织代码"| backbone v8 -->|"JIT 编译"| fastjs fastjs -->|"JS 终于足够快, 能跑出浏览器"| node jquery --> imperative imperative -.->|"伏笔: 手动同步状态/视图成灾, 催生声明式"| react["React / 声明式"] node -.->|"伏笔: 前端工程化基础设施"| build["构建工具时代"] classDef seed fill:#fff3e0,stroke:#e65100; classDef next fill:#eceff1,stroke:#607d8b,stroke-dasharray:4 3; class xhr,v8,node seed; class react,build next;
本时代的历史地位
Ajax 时代是前端的”农业革命”:网页第一次能”养活”复杂应用。jQuery 是这个时代的图腾——它用最务实的方式解决了最痛的问题,却也因为它的”命令式”本质,亲手为自己刨好了坟墓。它教会了整个行业一个深刻教训:抹平差异只是权宜之计,真正的进步是改变思维范式——从”怎么改 DOM”到”UI 应该长什么样”。 这个范式转变,就是下一个时代的全部主题。
🔗 上一篇:1995-2005 浏览器时代 | 下一篇:2013-2018 SPA时代 🔗 相关专题:jQuery | Backbone | Chrome | ES5