Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Node的核心与红利
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Jackson Tian
September 10, 2012
Programming
800
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Node的核心与红利
尝试从历史的角度来说明为什么Node是今天这个样子的。至少,它不是为前端工程师写就的,尽管前端工程师可以轻易地用上它。
Jackson Tian
September 10, 2012
More Decks by Jackson Tian
See All by Jackson Tian
Node简介
jacksontian
5
310
企业级Node.js开发
jacksontian
8
550
git-social-coding-system
jacksontian
6
140
Other Decks in Programming
See All in Programming
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
230
Can LLMs Replicate 4 Years of Compose Migration? Exploring the boundaries of automation with 279 XML files from a real product
makun
0
140
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
450
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
150
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
130
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.6k
AI × TiDD / 2026.09.05 Redmine 大阪
tokudiro
1
150
How I Stole PSI from Android Studio - DroidKaigi2026
worker8
0
120
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
180
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
56
38k
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
230
AIエージェント時代のコードレビューを設計する
nogu66
6
2.7k
Featured
See All Featured
Embracing the Ebb and Flow
colly
88
5.2k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
660
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
A designer walks into a library…
pauljervisheath
211
25k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Amusing Abliteration
ianozsvald
1
300
Evolving SEO for Evolving Search Engines
ryanjones
0
290
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Transcript
Node.js的核⼼心与红利 by @朴灵 1 12年9月11⽇日星期⼆二
关于我 • 阿⾥里巴巴 - CDO - 数据产品部 • CNode社区活动组织者之⼀一 •
InfoQ专栏:#深⼊入浅出Node.js#主持者 2 12年9月11⽇日星期⼆二
议程 • 淘宝指数 • Node.js的历史 • Node.js的崛起 • 拥抱开源 3
12年9月11⽇日星期⼆二
⼀一站式JavaScript体验 4 12年9月11⽇日星期⼆二
⼀一站式JavaScript体验 4 12年9月11⽇日星期⼆二
⼀一站式JavaScript体验 4 12年9月11⽇日星期⼆二
⼀一站式JavaScript体验 4 12年9月11⽇日星期⼆二
⼀一站式JavaScript体验 4 12年9月11⽇日星期⼆二
⼀一站式JavaScript体验 4 12年9月11⽇日星期⼆二
⼀一站式JavaScript体验 Connect 4 12年9月11⽇日星期⼆二
⼀一站式JavaScript体验 Connect 4 12年9月11⽇日星期⼆二
⼀一站式JavaScript体验 Redis & MRedis Connect 4 12年9月11⽇日星期⼆二
⼀一站式JavaScript体验 Redis & MRedis Connect 4 12年9月11⽇日星期⼆二
⼀一站式JavaScript体验 MongoSkin Redis & MRedis Connect 4 12年9月11⽇日星期⼆二
⼀一站式JavaScript体验 MongoSkin ITier Redis & MRedis Connect 4 12年9月11⽇日星期⼆二
⼀一站式JavaScript体验 MongoSkin ITier Redis & MRedis Connect 4 12年9月11⽇日星期⼆二
⼀一站式JavaScript体验 Should MongoSkin ITier Redis & MRedis Connect 4 12年9月11⽇日星期⼆二
⼀一站式JavaScript体验 Should MongoSkin ITier Redis & MRedis Connect 4 12年9月11⽇日星期⼆二
⼀一站式JavaScript体验 WebGhost Should MongoSkin ITier Redis & MRedis Connect 4
12年9月11⽇日星期⼆二
⼀一站式JavaScript体验 WebGhost Should MongoSkin ITier Redis & MRedis Connect Myfox
4 12年9月11⽇日星期⼆二
市⾯面上的误解 5 12年9月11⽇日星期⼆二
市⾯面上的误解 • ⼜又是⼀一⻔门什么新语⾔言吧 5 12年9月11⽇日星期⼆二
市⾯面上的误解 • ⼜又是⼀一⻔门什么新语⾔言吧 • Node.js肯定是⼏几个前端⼯工程师在实验室 ⾥里捣⿎鼓出来的 5 12年9月11⽇日星期⼆二
市⾯面上的误解 • ⼜又是⼀一⻔门什么新语⾔言吧 • Node.js肯定是⼏几个前端⼯工程师在实验室 ⾥里捣⿎鼓出来的 • 直觉上JavaScript不应该跑在后端 5 12年9月11⽇日星期⼆二
市⾯面上的误解 • ⼜又是⼀一⻔门什么新语⾔言吧 • Node.js肯定是⼏几个前端⼯工程师在实验室 ⾥里捣⿎鼓出来的 • 直觉上JavaScript不应该跑在后端 • 异步是反⼈人类的?
5 12年9月11⽇日星期⼆二
JavaScript历史的开启 6 12年9月11⽇日星期⼆二
JavaScript历史的开启 • Brendan Eich 6 12年9月11⽇日星期⼆二
JavaScript历史的开启 • Brendan Eich • Netscape 6 12年9月11⽇日星期⼆二
JavaScript历史的开启 • Brendan Eich • Netscape • 10 days 6
12年9月11⽇日星期⼆二
突变的基因 7 12年9月11⽇日星期⼆二
突变的基因 • ⺴⽹网景希望的JavaScript是Java + Script 7 12年9月11⽇日星期⼆二
突变的基因 • ⺴⽹网景希望的JavaScript是Java + Script 7 12年9月11⽇日星期⼆二
突变的基因 7 12年9月11⽇日星期⼆二
突变的基因 7 12年9月11⽇日星期⼆二
突变的基因 • 实际上是C + Scheme + Self + Java 7
12年9月11⽇日星期⼆二
突变的基因 • 实际上是C + Scheme + Self + Java 7
12年9月11⽇日星期⼆二
突变的基因 7 12年9月11⽇日星期⼆二
突变的基因 7 12年9月11⽇日星期⼆二
拐点1 • 原型链 • 函数式 8 12年9月11⽇日星期⼆二
最早的ServerSide JS • LiveWire 9 12年9月11⽇日星期⼆二
ECMAScript 10 12年9月11⽇日星期⼆二
ECMAScript • 1997年ECMA262颁布 10 12年9月11⽇日星期⼆二
ECMAScript • 1997年ECMA262颁布 • 极⼩小的语⾔言标准集 10 12年9月11⽇日星期⼆二
ECMAScript • 1997年ECMA262颁布 • 极⼩小的语⾔言标准集 • 早产的优质基因携带者 10 12年9月11⽇日星期⼆二
问题1 • 为何LiveWire没有后续发展? 11 12年9月11⽇日星期⼆二
问题2 • 1997-2006年间JavaScript都在干嘛? 12 12年9月11⽇日星期⼆二
浏览器⼤大战 13 12年9月11⽇日星期⼆二
浏览器⼤大战 13 12年9月11⽇日星期⼆二
浏览器⼤大战 13 12年9月11⽇日星期⼆二
浏览器⼤大战 13 12年9月11⽇日星期⼆二
浏览器⼤大战 13 12年9月11⽇日星期⼆二
浏览器⼤大战 13 12年9月11⽇日星期⼆二
JavaScript性能提升 14 12年9月11⽇日星期⼆二
JavaScript性能提升 function fibonacci(n) { if (n < 2) { return
n; } return fibonacci(n - 2) + fibonacci(n - 1); } console.log(fibonacci(40)); 14 12年9月11⽇日星期⼆二
JavaScript性能提升 14 12年9月11⽇日星期⼆二
JavaScript性能提升 14 12年9月11⽇日星期⼆二
JavaScript性能提升 14 12年9月11⽇日星期⼆二
Web2.0 • Web2.0 • Ajax⼲⼴广泛应⽤用 15 12年9月11⽇日星期⼆二
拐点2 • JavaScript引擎性能⼤大幅提升 • JavaScript趋向应⽤用化 16 12年9月11⽇日星期⼆二
问题3 • 为何⼀一⻔门图灵完备的语⾔言,在前端⼲⼴广泛 应⽤用,在后端却⽆无⼈人问津? 17 12年9月11⽇日星期⼆二
此时现状 • JavaScript严重依赖浏览器 • JavaScript API⽀支离破碎 18 12年9月11⽇日星期⼆二
CommonJS • ⼀一个理想主义的救世主 • JavaScript anywhere 19 12年9月11⽇日星期⼆二
拐点3 • CommonJS规范指导JavaScrit⼤大规模编程 20 12年9月11⽇日星期⼆二
问题4 • 谁能帮助CommonJS实现理想? 21 12年9月11⽇日星期⼆二
JavaScript的转折者 22 12年9月11⽇日星期⼆二
• 2009 JavaScript的转折者 22 12年9月11⽇日星期⼆二
• 2009 • Ryan Dahl JavaScript的转折者 22 12年9月11⽇日星期⼆二
• 2009 • Ryan Dahl • 资深C/C++码农 JavaScript的转折者 22 12年9月11⽇日星期⼆二
Node.js的逆袭 http:/ / www.google.com/ trends/?q=node.js 23 12年9月11⽇日星期⼆二
Ryan的⺫⽬目标 • 三年前写作Ebb/libebb • Ryan Dahl需要⼀一个⾼高性能的Web Server • 它应该是基于Event Loop的,异步的
24 12年9月11⽇日星期⼆二
Web Server的发展 • 多进程(fork/prefork) • 多线程(thread per connection, thread pool)
• 单线程(poll/epoll/IOCP) 25 12年9月11⽇日星期⼆二
Ryan的选择 • Ruby • C/C++ • Lua 26 12年9月11⽇日星期⼆二
问题5 • ebb项⺫⽬目为什么三年前停⽌止了更新? 27 12年9月11⽇日星期⼆二
拐点的作⽤用 28 12年9月11⽇日星期⼆二
拐点的作⽤用 • V8 28 12年9月11⽇日星期⼆二
拐点的作⽤用 • V8 • JavaScript在服务端基本是⼀一⽚片空⽩白 28 12年9月11⽇日星期⼆二
拐点的作⽤用 • V8 • JavaScript在服务端基本是⼀一⽚片空⽩白 • 事件驱动 28 12年9月11⽇日星期⼆二
拐点的作⽤用 • V8 • JavaScript在服务端基本是⼀一⽚片空⽩白 • 事件驱动 • CommonJS给予结构化的指导 28
12年9月11⽇日星期⼆二
Node.js成果 29 12年9月11⽇日星期⼆二
Node.js成果 • ⾼高性能Web服务器 ➛ ⾯面向⺴⽹网络的平台 29 12年9月11⽇日星期⼆二
Node.js成果 • ⾼高性能Web服务器 ➛ ⾯面向⺴⽹网络的平台 • ⾸首个将异步⼲⼴广泛应⽤用到业务层的平台!!! 29 12年9月11⽇日星期⼆二
对⽐比⼀一下Nginx 30 12年9月11⽇日星期⼆二
对⽐比⼀一下Nginx • 作为Web服务器,逊于Nginx 30 12年9月11⽇日星期⼆二
对⽐比⼀一下Nginx • 作为Web服务器,逊于Nginx • Nginx仅仅只是Web Server 30 12年9月11⽇日星期⼆二
对⽐比⼀一下Nginx • 作为Web服务器,逊于Nginx • Nginx仅仅只是Web Server • Node.js却可以⾯面向各个业务⽅方向 30 12年9月11⽇日星期⼆二
拐点5 • 引⼊入异步到业务层,⾮非阻塞特性,使得 语⾔言模型在单线程上就脱颖⽽而出 31 12年9月11⽇日星期⼆二
云时代并⾏行的重要性 IO开销 花费CPU时钟周期 CPU Cache L1 3 CPU Cache L2
14 RAM 250 Disk 41000000 Net 240000000 32 12年9月11⽇日星期⼆二
Show me the code • 10次⽆无依赖的数据库调⽤用(分布式) • 时间消耗分别为t1、t2、t3、...、t10 • 总时间?你的答案是?
33 12年9月11⽇日星期⼆二
Node.js是有暇的 34 12年9月11⽇日星期⼆二
Node.js是有暇的 • 单线程,多核CPU如何利⽤用? 34 12年9月11⽇日星期⼆二
Node.js是有暇的 • 单线程,多核CPU如何利⽤用? • 单线程,⼀一个异常就导致进程挂掉 34 12年9月11⽇日星期⼆二
Node.js是有暇的 • 单线程,多核CPU如何利⽤用? • 单线程,⼀一个异常就导致进程挂掉 • 听说内存使⽤用有限制? 34 12年9月11⽇日星期⼆二
Node.js是有暇的 • 单线程,多核CPU如何利⽤用? • 单线程,⼀一个异常就导致进程挂掉 • 听说内存使⽤用有限制? • 听说异步是反⼈人类的? 34
12年9月11⽇日星期⼆二
Node.js是有暇的 • 单线程,多核CPU如何利⽤用? • 单线程,⼀一个异常就导致进程挂掉 • 听说内存使⽤用有限制? • 听说异步是反⼈人类的? •
回调函数的嵌套会死⼈人呢!!! 34 12年9月11⽇日星期⼆二
怎么解决? 35 12年9月11⽇日星期⼆二
怎么解决? • 在⼀一个解决⽅方案⽐比问题还多的社区 35 12年9月11⽇日星期⼆二
怎么解决? • 在⼀一个解决⽅方案⽐比问题还多的社区 • 呵呵。 35 12年9月11⽇日星期⼆二
怎么解决? • 在⼀一个解决⽅方案⽐比问题还多的社区 • 呵呵。 35 12年9月11⽇日星期⼆二
怎么解决? • 在⼀一个解决⽅方案⽐比问题还多的社区 • 呵呵。 35 12年9月11⽇日星期⼆二
怎么解决? • 在⼀一个解决⽅方案⽐比问题还多的社区 • 呵呵。 35 12年9月11⽇日星期⼆二
怎么解决? • 在⼀一个解决⽅方案⽐比问题还多的社区 • 呵呵。 35 12年9月11⽇日星期⼆二
怎么解决? • 在⼀一个解决⽅方案⽐比问题还多的社区 • 呵呵。 35 12年9月11⽇日星期⼆二
怎么解决? • 在⼀一个解决⽅方案⽐比问题还多的社区 • 呵呵。 35 12年9月11⽇日星期⼆二
因果循环1 36 12年9月11⽇日星期⼆二
因果循环1 CommonJS 36 12年9月11⽇日星期⼆二
因果循环1 CommonJS 36 12年9月11⽇日星期⼆二
因果循环1 CommonJS Node 36 12年9月11⽇日星期⼆二
因果循环1 CommonJS Node 36 12年9月11⽇日星期⼆二
因果循环1 CommonJS Node NPM 36 12年9月11⽇日星期⼆二
因果循环1 CommonJS Node NPM 36 12年9月11⽇日星期⼆二
因果循环2 37 12年9月11⽇日星期⼆二
因果循环2 V8 37 12年9月11⽇日星期⼆二
因果循环2 V8 Node 37 12年9月11⽇日星期⼆二
因果循环2 V8 Node 37 12年9月11⽇日星期⼆二
享受开源 38 12年9月11⽇日星期⼆二
享受开源 官⽅方NPM 38 12年9月11⽇日星期⼆二
享受开源 官⽅方NPM 38 12年9月11⽇日星期⼆二
享受开源 官⽅方NPM 单向同步 38 12年9月11⽇日星期⼆二
享受开源 本地NPM 官⽅方NPM 单向同步 38 12年9月11⽇日星期⼆二
享受开源 本地NPM 官⽅方NPM 单向同步 38 12年9月11⽇日星期⼆二
享受开源 本地NPM 官⽅方NPM 项⺫⽬目 单向同步 38 12年9月11⽇日星期⼆二
享受开源 本地NPM 官⽅方NPM 项⺫⽬目 单向同步 38 12年9月11⽇日星期⼆二
享受开源 本地NPM 官⽅方NPM 项⺫⽬目 单向同步 私有模块 38 12年9月11⽇日星期⼆二
享受开源 本地NPM 官⽅方NPM 项⺫⽬目 单向同步 私有模块 38 12年9月11⽇日星期⼆二
享受开源 本地NPM 官⽅方NPM 项⺫⽬目 单向同步 私有模块 38 12年9月11⽇日星期⼆二
享受开源 本地NPM 官⽅方NPM 项⺫⽬目 单向同步 私有模块 公有模块 38 12年9月11⽇日星期⼆二
享受开源 本地NPM 官⽅方NPM 项⺫⽬目 单向同步 私有模块 公有模块 38 12年9月11⽇日星期⼆二
拐点6 39 12年9月11⽇日星期⼆二
拐点6 • ⽣生态系统的形成 39 12年9月11⽇日星期⼆二
拐点6 • ⽣生态系统的形成 • 有梦就会实现 39 12年9月11⽇日星期⼆二
Q & A 40 12年9月11⽇日星期⼆二
41 12年9月11⽇日星期⼆二