Node.js是一套用來編寫高性能網絡服務器的JavaScript工具包。它可以讓JavaScript在服務器端運行,因此,它可用來快速構建網絡服務及應用的平臺。 本書是學習Node編程的入門指南。全書共12章,由淺入深。本書首先介紹Node的基礎知識、Node的核心功能、Node的模塊系統(tǒng)和REPL等,然后講解Node的Web應用、流和管道、Node對文件系統(tǒng)的支持、網絡和套接字、子進程、ES6等相關知識,*后介紹了全棧Node編程、Node的開發(fā)環(huán)境和產品環(huán)境以及Node的新應用。 本書適合有一定基礎的JavaScript程序員閱讀,也適合對學習Node應用開發(fā)感興趣的讀者學習參考。
·作者為資深Web開發(fā)工作者,將自己多年的實戰(zhàn)經驗與讀者分享,閱讀完本書,讀者可以通過Node將Web開發(fā)技術從瀏覽器擴展到服務端,并且學習如何在基于JavaScript的平臺上實現快速和高度可擴展的網絡應用。 ·本書針對Node長期支持版本(LTS)和Node6.0版本進行了更新。通過本書,讀者可以掌握Node的核心技能并了解如何使用內建和第三方模塊。 ·此外,本書還講解了Node的事件驅動異步I/O模型。它可以幫助讀者搭建出提供高并發(fā)訪問而不涉及大量計算的數據密集型應用。如果讀者對JavaScript比較感興趣,可以通過本書提供的代碼和部署示例在服務端使用Node進行開發(fā)。
Shelley Powers一直從事Web技術相關的工作,并為此著書。她的著作的內容涉及很多方面,從JavaScript的第一個版本到最新的圖像和設計工具。她最近出版的圖書涵蓋語義網、Ajax、JavaScript和網絡圖像等內容。
第 1章 Node運行環(huán)境 1
1.1 安裝Node 1
1.2 使用Node編寫Hello, World 3
1.2.1 一個基本的Hello World程序 3
1.2.2 升級版Hello World 6
1.2.3 Node命令行參數 9
1.3 Node部署環(huán)境 10
1.3.1 將Node部署在你的服務器、VPS或者托管主機上 10
1.3.2 云部署 10
1.4 Node長期支持和Node升級 11
1.4.1 Node的最新語義化版本規(guī)范 12
1.4.2 Node版本更新 13
1.5 Node、V8和ES6 14
1.6 高級內容:Node的C/C 插件 15
第 2章 Node基礎:全局對象、事件和Node自身的異步特性 18
2.1 global和process對象 19
2.1.1 global對象 19
2.1.2 process對象 20
2.2 緩沖器(buffer)、類型化數組和字符串 24
2.2.1 緩沖器、JSON、StringDecoder和UTF-8字符串 26
2.2.2 緩沖器操作 28
2.3 Node的回調函數和異步事件處理 31
2.3.1 事件隊列(循環(huán)) 31
2.3.2 創(chuàng)建一個異步回調函數 35
2.3.3 EventEmitter 37
2.3.4 Node事件循環(huán)和定時器 41
2.4 嵌套回調和異常處理 44
第3章 Node模塊和Node包管理器(npm)基礎 52
3.1 Node模塊系統(tǒng)概覽 52
3.1.1 Node如何查找并加載一個模塊 53
3.1.2 沙箱和虛擬機模塊 56
3.2 NPM的深度挖掘 60
3.3 創(chuàng)建和發(fā)布你自己的Node模塊 65
3.3.1 創(chuàng)建一個模塊 65
3.3.2 將整個目錄打包 66
3.3.3 準備發(fā)布一個模塊 67
3.3.4 發(fā)布模塊 70
3.4 探索Node模塊以及3個必要模塊 71
3.4.1 使用Async來更好地管理回調函數 73
3.4.2 使用Commander玩轉命令行 78
3.4.3 無所不在的Underscore 80
第4章 交互式Node和REPL,以及控制臺的深入研究 82
4.1 REPL的初體驗和undefined表達式 82
4.2 REPL的好處:深入理解JavaScript引擎 84
4.3 更復雜的多行JavaScript 85
4.3.1 REPL命令 89
4.3.2 REPL和rlwrap 89
4.3.3 自定義REPL 91
4.4 世事無常經常保存 94
4.5 控制臺的必要性 95
4.5.1 控制臺消息類型、Console類以及阻塞 95
4.5.2 使用util.format()和util.inspect()來格式化消息 97
4.5.3 用控制臺和定時器提供更豐富的反饋 101
第5章 Node和Web 102
5.1 HTTP模塊:服務器(server)和客戶端(client) 102
5.2 創(chuàng)建一個靜態(tài)網站服務器都需要什么 107
5.3 使用Apache來代理Node服務器 115
5.4 使用Query String來解析參數 117
5.5 DNS解析 118
第6章 Node和本地系統(tǒng) 120
6.1 探索操作系統(tǒng) 120
6.2 流(Stream)和管道(Pipe) 122
6.3 文件系統(tǒng)的正式介紹 123
6.3.1 fs.Stats類 124
6.3.2 文件系統(tǒng)監(jiān)聽器 126
6.3.3 文件讀取和寫入 127
6.3.4 目錄的訪問和維護 128
6.3.5 文件流 129
6.4 通過路徑訪問資源 131
6.5 創(chuàng)建一個命名行工具 133
6.6 使用ZLib進行壓縮/解壓縮 135
6.7 管道和ReadLine模塊 138
第7章 網絡、套接字和安全 141
7.1 服務器、流和套接字 141
7.1.1 套接字和流 141
7.1.2 TCP套接字和服務器 142
7.1.3 UDP/數據報套接字 147
7.2 守門人 148
7.2.1 安裝TLS/SSL 149
7.2.2 使用HTTPS 150
7.2.3 Crypto模塊 152
第8章 子進程 157
8.1 child_process.spawn 157
8.1.1 child_process.exec和child_process.execFile 161
8.1.2 child_process.fork 163
8.2 在Windows中運行一個子進程程序 164
第9章 Node和ES6 167
9.1 嚴格模式 167
9.2 let和const 169
9.3 箭頭函數 171
9.4 類 173
9.5 使用Bluebird來實現promise 175
第 10章 全棧Node開發(fā) 179
10.1 Express應用框架 179
10.2 MongoDB和Redis數據庫系統(tǒng) 185
10.2.1 MongoDB 186
10.2.2 Redis中的key/value存儲 189
10.3 AngularJS和其他全?蚣堋196
第 11章 Node開發(fā)環(huán)境和產品環(huán)境 202
11.1 調試Node程序 202
11.1.1 Node調試器 202
11.1.2 Node檢查器 207
11.2 單元測試 210
11.2.1 使用Assert進行單元測試 210
11.2.2 用Nodeunit寫單元測試 213
11.2.3 其他的測試框架 215
11.3 保持Node進程的運行 218
11.4 使用Apache Bench進行基準測試和負載測試 221
第 12章 新環(huán)境中的Node 224
12.1 三星的IoT和GPIO 224
12.2 Windows與Chakra Node 226
12.3 微控制器和微型計算機中的Node 227
12.3.1 Fritzing 228
12.3.2 Node和Arduino 232
12.3.3 Node和樹莓派2 238