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日 |
要理解Ashkenas的贡献,得先理解他面对的JavaScript是什么样子。
2009年的JavaScript生态,用一个词形容:蛮荒。ES5刚刚发布,但浏览器支持参差不齐。没有let和const,只有var——这意味着变量作用域满天飞。没有箭头函数,写个回调要敲function() {}这几个字母无数遍。没有class,面向对象编程要靠prototype链手动拼接。没有模块系统,所有东西挂在全局变量上。没有Promise,回调地狱(Callback Hell)是每个开发者的日常。
我的延伸分析:当时的前端开发者社区有一种普遍的焦虑——JavaScript"不够严肃"。Python有优雅的语法和标准库,Ruby有Rails生态,Java有企业级工具链。而JavaScript呢?它只是浏览器里用来操作DOM的小脚本语言。这种焦虑直接催生了一个问题:JavaScript配得上"成为一门真正的编程语言"吗?
Jeremy Ashkenas的回答是:不配。但我可以改变它。
2009年,Ashkenas发布了Underscore.js。这是一个提供100多个实用函数的工具库,涵盖数组操作(map、filter、reduce、each)、对象操作、函数组合、模板引擎等功能。
在今天看来,这些函数不过是JavaScript原生就有的东西。但在2009年,Array.prototype.map和Array.prototype.filter还没有被主流浏览器广泛支持。Underscore.js实际上做了两件事:
视频核心观点: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的翻版。
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"策略。当你无法改变一门语言本身时,你可以创造一个更好的语法,然后编译回去。这个策略后来被反复验证:
CoffeeScript是这个策略在前端领域的第一次大规模成功实践。它的衰落也不是因为失败了,而是因为它的使命完成了——ES6吸收了它的精华,让它在语法层面变得多余。
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的影响力不在于它自己的代码有多好,而在于它定义了前端架构的讨论框架。它提出了三个至今仍是前端核心的问题:
Fireship视频最打动人的部分,是讲述Ashkenas的"消失"。
三个项目,每一个都曾统治前端生态。但到了2026年:
三个项目,三种"被取代"的命运。但取代它们的,恰恰是站在它们肩膀上的新一代工具。
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路由成为所有框架标配
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新闻奖
Ashkenas的三个项目都"死"了,但它们的理念全部活了下来。这揭示了一个深刻的工程哲学:你创造的工具最高级的形态,是成为基础设施的一部分,让使用者甚至不知道你的存在。 就像你每天用TCP/IP上网,但没人记得发明TCP的具体工程师。Underscore的map/filter变成了原生方法,CoffeeScript的箭头函数变成了JS语法——它们的消亡恰恰是成功的证明。
CoffeeScript验证的策略,至今仍是突破语言限制的最有效手段。TypeScript、JSX、Sass、Tailwind CSS——全部采用了"编译到下层语言"的方式。如果你在设计一个新工具或DSL,先问自己:能不能编译到已有的东西上? 这比从零开始构建整个生态要高效一万倍。
Ashkenas从未在Twitter上经营"JavaScript之父"的人设,从未创建SaaS公司把开源项目商业化,从未在会议上巡回演讲。他写代码解决问题,问题解决后就去做下一件事。在2026年"开发者网红"满天飞的时代,这种纯粹的工具创造者精神值得重新审视。
你今天写的const fn = () => {},背后是CoffeeScript在2010年的大胆实验。你用的router.push('/home'),背后是Backbone.js在2010年定义的SPA路由概念。你调用的array.filter(x => x > 0),背后是Underscore.js在2009年带来的函数式编程启蒙。了解这些历史,不只是情怀——它能帮你理解为什么今天的技术栈是这个样子,从而在未来做更好的技术选择。
Jeremy Ashkenas用三个项目教会了JavaScript社区什么是函数式编程、什么是优雅语法、什么是前端架构——当ES6把这些全部变成原生特性时,他安静地转身去拿了一个新闻奖,连告别都省了。
本文由「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 等场景全覆盖。
