自項目開始之后短短四年多時間里,Node變得非常熱門,使用者也非常多。這些使用者對Node的各自倚重點也各不相同。經過整理,主要有以下幾類:
* **前后端編程語言環境統一**。這類倚重點的代表是雅虎。雅虎開放了Cocktail框架,利用自己深厚的前端沉淀,將YUI3這個前端框架的能力借助Node延伸到服務器端,使得使用者擺脫了日常工作中一邊些JavaScript一邊些PHP所帶來的上下文交換負擔。
* **Node帶來的高性能I/O用于實時應用**。Voxer將Node應用在實時語音上。國內騰訊的朋友網將Node應用在長鏈接中,以提供實時功能,花瓣網、蘑菇街等公司通過socket.io實現實時通知的功能。
* **并行I/O使得使用者可以更高效的利用分布式環境**。阿里巴巴和eBay是這方面的典型。阿里巴巴的NodeFox和eBay的q1.io都是借用Node并行I/O的能力,更高效的使用已有的數據。
* **并行I/O,有效利用穩定接口提升Web渲染能力**。雪球財經和LinkedIn的移動版網站均是這種案例,撇棄同步等待式的順序請求,大膽采用并行I/O,加速數據的獲取進而提升Web的渲染速度。
* **云計算平臺提供Node支持**。微軟將Node引入Azure的開發中,阿里云、百度均紛紛在云服務器上提供Node應用托管服務,Joynet更是云計算中提供Node支持的代表。這類平臺看重JavaScript帶來的開發上的優勢,以及低資源占用、高性能的特點。
* **游戲開發領域**。游戲領域對實時和并發有很高的要求,網易開源了pomelo實時框架,可以應用在游戲和高實時應用中。
* **工具類應用**。過去依賴Java或其它語言構建的前端工具類應用,紛紛被一些前端工程師用Node重寫,用前端熟悉的語言為前端構建熟悉的工具。
- 目錄
- 第1章 Node 簡介
- 1.1 Node 的誕生歷程
- 1.2 Node 的命名與起源
- 1.2.1 為什么是 JavaScript
- 1.2.2 為什么叫 Node
- 1.3 Node給JavaScript帶來的意義
- 1.4 Node 的特點
- 1.4.1 異步 I/O
- 1.4.2 事件與回調函數
- 1.4.3 單線程
- 1.4.4 跨平臺
- 1.5 Node 的應用場景
- 1.5.1 I/O 密集型
- 1.5.2 是否不擅長CPU密集型業務
- 1.5.3 與遺留系統和平共處
- 1.5.4 分布式應用
- 1.6 Node 的使用者
- 1.7 參考資源
- 第2章 模塊機制
- 2.1 CommonJS 規范
- 2.1.1 CommonJS 的出發點
- 2.1.2 CommonJS 的模塊規范
- 2.2 Node 的模塊實現
- 2.2.1 優先從緩存加載
- 2.2.2 路徑分析和文件定位
- 2.2.3 模塊編譯
- 2.3 核心模塊
- 2.3.1 JavaScript核心模塊的編譯過程
- 2.3.2 C/C++核心模塊的編譯過程
- 2.3.3 核心模塊的引入流程
- 2.3.4 編寫核心模塊
- 2.4 C/C++擴展模塊
- 2.4.1 前提條件
- 2.4.2 C/C++擴展模塊的編寫
- 2.4.3 C/C++擴展模塊的編譯
- 2.4.2 C/C++擴展模塊的加載
- 2.5 模塊調用棧
- 2.6 包與NPM
- 2.6.1 包結構
- 2.6.2 包描述文件與NPM
- 2.6.3 NPM常用功能
- 2.6.4 局域NPM
- 2.6.5 NPM潛在問題
- 2.7 前后端共用模塊
- 2.7.1 模塊的側重點
- 2.7.2 AMD規范
- 2.7.3 CMD規范
- 2.7.4 兼容多種模塊規范
- 2.8 總結
- 2.9 參考資源
- 第3章 異步I/O
- 3.1 為什么要異步I/O
- 3.1.1 用戶體驗
- 3.1.2 資源分配
- 3.2 異步I/O實現現狀
- 3.2.1 異步I/O與非阻塞I/O
- 3.2.2 理想的非阻塞異步I/O
- 3.2.3 現實的異步I/O
- 3.3 Node的異步I/O
- 3.3.1 事件循環
- 3.3.2 觀察者
- 3.3.3 請求對象
- 3.3.4 執行回調
- 3.3.5 小結
- 3.4 非I/O的異步API
- 3.4.1 定時器
- 3.5 事件驅動與高性能服務器