<!-- title: 一个被遗忘的开发者如何拯救了JavaScript -->
<!-- domain: programming -->
<!-- video: https://www.youtube.com/watch?v=JfPWbttemYE -->

# 一个被遗忘的开发者如何拯救了JavaScript

## 导语

2026年5月底，Fireship（421万订阅）发布了一条不到7分钟的视频，标题叫"The forgotten developer who saved JavaScript..."。视频讲的不是Brendan Eich（JavaScript创造者），不是Ryan Dahl（Node.js作者），也不是Dan Abramov（React核心开发者）。它讲的是一个几乎被整个前端社区遗忘的名字——**Jeremy Ashkenas**。

这个人，一个人，在2009到2011年间，先后创造了**Underscore.js**、**CoffeeScript**和**Backbone.js**三个项目。它们分别解决了JavaScript没有标准库、语法丑陋、前端没有架构三大痛点。更重要的是，这三个项目的理念全部被吸收进了现代JavaScript和现代框架中——arrow function、class、解构赋值、SPA路由、响应式数据绑定……你今天写的每一行JS代码，都有他的影子。

但他从未创建公司，从未建立个人品牌，从未在GitHub上拥有百万粉丝。当他的三个项目逐一被时代淘汰时，他安静地转身，去做数据可视化和互动新闻了。这就是一个"拯救了JavaScript却被遗忘"的故事。

## 视频背景卡片

| 项目 | 内容 |
|------|------|
| 视频标题 | The forgotten developer who saved JavaScript... |
| 频道 | Fireship |
| 时长 | 约6分29秒 |
| 播放量 | 发布一周内迅速攀升（Fireship平均单视频50万+播放） |
| 核心主题 | Jeremy Ashkenas与三大JS基础项目的传奇故事 |
| 发布日期 | 2026年5月29日 |

## 核心内容拆解

### 一、2009年的JavaScript有多糟糕？

要理解Ashkenas的贡献，得先理解他面对的JavaScript是什么样子。

2009年的JavaScript生态，用一个词形容：**蛮荒**。ES5刚刚发布，但浏览器支持参差不齐。没有`let`和`const`，只有`var`——这意味着变量作用域满天飞。没有箭头函数，写个回调要敲`function() {}`这几个字母无数遍。没有`class`，面向对象编程要靠`prototype`链手动拼接。没有模块系统，所有东西挂在全局变量上。没有`Promise`，回调地狱（Callback Hell）是每个开发者的日常。

**我的延伸分析**：当时的前端开发者社区有一种普遍的焦虑——JavaScript"不够严肃"。Python有优雅的语法和标准库，Ruby有Rails生态，Java有企业级工具链。而JavaScript呢？它只是浏览器里用来操作DOM的小脚本语言。这种焦虑直接催生了一个问题：**JavaScript配得上"成为一门真正的编程语言"吗？**

Jeremy Ashkenas的回答是：不配。但我可以改变它。

### 二、Underscore.js：给JavaScript装上"标准库"

2009年，Ashkenas发布了**Underscore.js**。这是一个提供100多个实用函数的工具库，涵盖数组操作（`map`、`filter`、`reduce`、`each`）、对象操作、函数组合、模板引擎等功能。

在今天看来，这些函数不过是JavaScript原生就有的东西。但在2009年，`Array.prototype.map`和`Array.prototype.filter`还没有被主流浏览器广泛支持。Underscore.js实际上**做了两件事**：

1. **Polyfill**：在不支持ES5的浏览器中提供现代数组方法
2. **范式转移**：将**函数式编程**范式带入了JavaScript社区

**视频核心观点**：Underscore.js让JavaScript开发者第一次体验到了"数据在管道中流动"的编程体验。你不再需要写`for`循环和临时变量，而是用`_.chain(data).filter(...).map(...).value()`这样的链式调用。

**我的延伸分析**：Underscore.js的影响力远超其代码本身。它直接催生了**Lodash**——John-David Dalton基于Underscore创建的更高性能分支。Lodash后来成为npm上下载量最大的包之一，而它的一切起点，都是Ashkenas的那100多个函数。更深远的影响是：当ES5的`Array`方法在2012-2014年逐渐被浏览器原生支持后，开发者发现——这些API的设计，几乎就是Underscore.js的翻版。

### 三、CoffeeScript：编译出未来

2010年12月，Ashkenas发布了**CoffeeScript** 1.0。这是一个"编译到JavaScript的小语言"，核心理念是：**JavaScript的问题不是能力不够，而是语法太丑。**

CoffeeScript引入了这些语法特性：

| CoffeeScript语法 | 对应的现代JavaScript |
|---|---|
| `->` 和 `=>` | 箭头函数 `() => {}` |
| `class Animal` | ES6 `class` 语法 |
| `{name, age} = person` | 解构赋值 |
| `"Hello #{name}"` | 模板字符串 |
| `name?` | 可选链 `name?` |
| `args...` | 展开运算符 `...args` |

看到这张表了吗？**CoffeeScript在2010年就引入了ES6在2015年才标准化的几乎所有语法糖。** Fireship在视频里用一句话概括了这个事实："CoffeeScript didn't die. It became JavaScript."

**视频关键数据**：CoffeeScript在GitHub上一度超越jQuery，成为**Star数最多的项目**。Ruby on Rails的创建者DHH在2011年宣布Rails默认支持CoffeeScript。在Node.js社区，2012-2013年间大量项目使用CoffeeScript编写。

**我的延伸分析**：CoffeeScript的成功揭示了编程语言演进的一个核心规律——**"编译到X"策略**。当你无法改变一门语言本身时，你可以创造一个更好的语法，然后编译回去。这个策略后来被反复验证：

- **TypeScript** → 编译到JavaScript（类型系统）
- **JSX** → 编译到JavaScript（模板语法）
- **Sass/Less** → 编译到CSS
- **Kotlin** → 编译到JVM字节码

CoffeeScript是这个策略在前端领域的第一次大规模成功实践。它的衰落也不是因为失败了，而是因为**它的使命完成了**——ES6吸收了它的精华，让它在语法层面变得多余。

### 四、Backbone.js：前端架构的第一块基石

2010年，Ashkenas发布了**Backbone.js**。如果说Underscore.js给了JavaScript工具，CoffeeScript给了它语法，那Backbone.js给了它**架构**。

在Backbone之前，前端开发没有统一的架构模式。jQuery时代，开发者把DOM操作、数据获取、事件处理全部混在一起，形成后来被称为"jQuery Soup"的意大利面条代码。

Backbone.js引入了四个核心概念：

```
Model      → 数据模型（数据+业务逻辑）
Collection → 模型集合（数据列表+排序/过滤）
View       → 视图层（DOM渲染+事件绑定）
Router     → 路由器（URL→视图映射）
```

**视频关键案例**：Backbone.js被大量知名产品采用——LinkedIn移动版、Foursquare、Trello、Airbnb、Hulu、SoundCloud、Walmart移动端。它几乎是2011-2013年间复杂前端应用的**事实标准**。

**我的延伸分析**：Backbone.js的影响力不在于它自己的代码有多好，而在于它**定义了前端架构的讨论框架**。它提出了三个至今仍是前端核心的问题：

1. **数据如何与UI同步？** → Backbone的事件驱动模型直接启发了React的单向数据流和Vue的响应式系统
2. **URL如何与应用状态关联？** → Backbone Router是所有现代SPA路由的先驱
3. **组件如何拆分？** → Backbone的Model/View分离影响了后来的Flux架构和组件化思想

### 五、为什么Ashkenas被遗忘了？

Fireship视频最打动人的部分，是讲述Ashkenas的"消失"。

三个项目，每一个都曾统治前端生态。但到了2026年：

- **Underscore.js** → 被Lodash和原生JS方法取代
- **CoffeeScript** → 被ES6/TypeScript取代
- **Backbone.js** → 被React/Vue/Angular取代

三个项目，三种"被取代"的命运。但取代它们的，恰恰是**站在它们肩膀上**的新一代工具。

Ashkenas本人呢？他没有像Dan Abramov那样加入Meta（React团队），没有像Evan You那样围绕Vue创建公司，也没有像Ryan Dahl那样发布"Deno"来替代自己的Node.js。他在DocumentCloud和《纽约时报》做着数据可视化和互动新闻的工作，获得了**2015年Gerald Loeb新闻奖**——这是新闻界的最高荣誉之一，和编程社区毫无关系。

**我的观点**：Ashkenas被遗忘的原因，恰恰也是他最值得尊敬的地方。他创造工具是为了**解决问题**，而不是为了建立个人帝国。当问题被更好的方案解决后，他安静地离开了。这种"解决问题然后消失"的开发者精神，和今天"先建立个人品牌再开源项目"的模式形成了鲜明对比。

### 六、一个开发者的蝴蝶效应

让我用一条影响链来展示Ashkenas的工作如何改变了整个技术世界：

```
Underscore.js (2009)
  → 前端社区接受函数式编程
  → Lodash fork → npm最大包之一
  → 原生Array方法的设计参照

CoffeeScript (2010)
  → 证明"编译到JS"策略可行
  → TypeScript采用相同策略
  → ES6/ES2015吸收其语法
  → 今天所有JS开发者都在用它的遗产

Backbone.js (2010)
  → 定义前端架构讨论框架
  → 直接影响Angular (2010)、Ember (2011)
  → 启发React (2013)的数据流思想
  → SPA路由成为所有框架标配
```

## 知识结构图

```mermaid
mindmap
  root((Jeremy Ashkenas的遗产))
    Underscore.js 2009
      函数式编程范式
      100+工具函数
      催生Lodash
      影响ES5 Array API设计
    CoffeeScript 2010
      编译到JS策略
      箭头函数 → ES6
      class语法 → ES6
      解构赋值 → ES6
      模板字符串 → ES6
      启发TypeScript
    Backbone.js 2010
      前端MVC架构
      Model/View/Router
      SPA路由先驱
      启发React数据流
      影响所有现代框架
    被遗忘的原因
      不建个人品牌
      不创建公司
      转向数据新闻
      获Gerald Loeb新闻奖
```

## 实战启示：给2026年开发者的四条思考

### 1. 最好的工具是让自己过时的工具

Ashkenas的三个项目都"死"了，但它们的理念全部活了下来。这揭示了一个深刻的工程哲学：**你创造的工具最高级的形态，是成为基础设施的一部分，让使用者甚至不知道你的存在。** 就像你每天用TCP/IP上网，但没人记得发明TCP的具体工程师。Underscore的`map`/`filter`变成了原生方法，CoffeeScript的箭头函数变成了JS语法——它们的消亡恰恰是成功的证明。

### 2. "编译到X"是最强大的技术杠杆

CoffeeScript验证的策略，至今仍是突破语言限制的最有效手段。TypeScript、JSX、Sass、Tailwind CSS——全部采用了"编译到下层语言"的方式。如果你在设计一个新工具或DSL，先问自己：**能不能编译到已有的东西上？** 这比从零开始构建整个生态要高效一万倍。

### 3. 解决问题比建立品牌更有价值

Ashkenas从未在Twitter上经营"JavaScript之父"的人设，从未创建SaaS公司把开源项目商业化，从未在会议上巡回演讲。他写代码解决问题，问题解决后就去做下一件事。在2026年"开发者网红"满天飞的时代，这种纯粹的工具创造者精神值得重新审视。

### 4. 每一个"理所当然"的背后都有人

你今天写的`const fn = () => {}`，背后是CoffeeScript在2010年的大胆实验。你用的`router.push('/home')`，背后是Backbone.js在2010年定义的SPA路由概念。你调用的`array.filter(x => x > 0)`，背后是Underscore.js在2009年带来的函数式编程启蒙。了解这些历史，不只是情怀——它能帮你理解**为什么**今天的技术栈是这个样子，从而在未来做更好的技术选择。

## 延伸学习路径

1. **[CoffeeScript, the Rise of "Build Your Own JavaScript"](https://www.infoq.com/presentations/CoffeeScript/)** — Jeremy Ashkenas本人在InfoQ上的演讲，亲自讲述CoffeeScript的设计哲学
2. **[The history of Single Page Apps: From jQuery to React](https://makersden.io/blog/history-of-single-page-apps)** — 从jQuery到React的完整SPA演进史，理解Backbone.js的历史位置
3. **Jeremy Ashkenas - Wikipedia** — 某百科条目，包含完整的生平和项目时间线
4. **[The Developer Who Quietly Saved JavaScript](https://www.zeebrain.com/post/jeremy-ashkenas-developer-who-saved-javascript)** — Zeebrain的深度分析文章，26000+字的详细技术解读
5. **[Fireship原视频](https://www.youtube.com/watch?v=JfPWbttemYE)** — 6分29秒的高密度讲述，值得反复观看

## 一句话总结

Jeremy Ashkenas用三个项目教会了JavaScript社区什么是函数式编程、什么是优雅语法、什么是前端架构——当ES6把这些全部变成原生特性时，他安静地转身去拿了一个新闻奖，连告别都省了。

## 参考来源

1. [The forgotten developer who saved JavaScript... — Fireship](https://www.youtube.com/watch?v=JfPWbttemYE) — 本文分析的核心视频
2. [The Developer Who Quietly Saved JavaScript — Zeebrain](https://www.zeebrain.com/post/jeremy-ashkenas-developer-who-saved-javascript) — Jeremy Ashkenas技术影响的详细分析
4. [The Unsung Hero Who Revitalized JavaScript — Frank's World](https://www.franksworld.com/2026/05/31/the-unsung-hero-who-revitalized-javascript-a-tribute-to-jeremy-ashkenas/) — 延伸解读文章
5. [CoffeeScript, the Rise of "Build Your Own JavaScript" — InfoQ](https://www.infoq.com/presentations/CoffeeScript/) — Ashkenas本人的技术演讲

---

> 本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵**爱卫生**（微信ID: gprshome201101）维护，聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。
> 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
