第1 章 安裝Node.js 及相關要點 .............. 1
安裝Node.js 和NPM ................................. 1
一鍵安裝 ................................................ 2
通過HomeBrew 或MacPorts 安裝 ........ 3
通過tar 文件安裝 .................................. 4
無須sudo 授權進行安裝 ........................ 4
通過Git Repo 進行安裝 ......................... 5
通過Nave 進行多版本安裝 ................... 5
通過NVM 進行多版本安裝................... 6
其他的多版本係統 .................................. 6
檢查安裝 ................................................ 7
Node.js 控製颱(REPL) ....................... 7
加載Node.js 腳本....................................... 9
Node.js 的基礎和語法 ............................... 9
弱類型 .................................................... 9
Buffer——Node.js 特殊數據類型..........10
對象字麵量 ...........................................10
函數 ....................................................... 11
數組 .......................................................12
原型特性 ...............................................12
編碼規範 ...............................................13
Node.js 的全局變量和保留字 ................14
__dirname 與process.cwd 的對比 .........17
瀏覽器API 輸助工具 ............................17
Node.js 的核心模塊 ...............................18
便捷的Node.js 工具 ..............................20
在Node.js 中讀寫文件 ..........................20
Node.js 中的數據流 ...............................21
使用NPM 安裝Node.js 模塊 ................21
優化Node.js 中的迴調函數...................22
使用Node.js 的HTTP 模塊來創建一個簡單服務器 ...................23
調試Node.js 程序......................................24
核心Node.js 調試 ..................................24
使用Node Inspector 來調試 ..................25
Node.js 集成開發環境和代碼編輯器 ...28
監聽文件變化 .............................................30
小結 ...............................................................31
第2 章 使用Express.js 4 創建Node.js 的Web 應用程序 ...................32
什麼是Express.js .......................................32
Express.js 是如何工作的 ..........................35
Express.js 的安裝 .......................................36
Express.js 的版本 ..................................36
Express.js 生成器 ..................................37
本地Express.js ......................................38
Express.js 腳手架 .......................................40
Express.js 命令行界麵 ...........................41
Express.js 中的路由 ...............................43
Express.js 的核心——中間件 ................44
一個Express.js 應用的配置...................45
Jade 就是Express.js/Node.js 的Haml ...45
腳手架總結 ...........................................45
博客項目概述 .............................................46
提交數據 ...............................................47
Express.js 4 中的Hello World 例子 .......48
創建文件夾 ...........................................49
NPM 初始化和package.json .................50
依賴聲明:npm install ...........................50
app.js 文件 .............................................51
Jade 模闆 ...............................................55
運行Hello World 應用 ...........................56
小結 ...............................................................56
第3 章 Node.js 基於Mocha 的測試驅動開發和行為驅動開發 ......................57
安裝與理解Mocha ...................................58
理解Mocha 的hook 機製 ......................60
用assert 進行TDD ...................................61
斷言庫Chai ...........................................63
用Expect.js 進行BDD .............................64
Expect.js 的語法 ....................................65
項目:為博客開發一個BDD 測試 ......65
將配置參數寫入Makefile .....................68
小結 ...............................................................69
第4 章 模闆引擎:Jade 和Handlebars 70
Jade 的語法和特性 ...................................70
標簽 .......................................................71
變量/數據 ..............................................71
屬性 .......................................................72
字麵量 ...................................................73
文本 .......................................................73
Script 和 Style 塊 ..................................74
JavaScript 代碼 ......................................74
注釋 .......................................................75
if 語句 ....................................................75
each 語句 ...............................................75
過濾器 ...................................................76
讀取變量 ...............................................76
case ........................................................76
函數mixin .............................................77
include ....................................................78
extend .....................................................78
單獨使用Jade .............................................79
Handlebars 的語法 ....................................83
變量 .......................................................83
each 語句 ...............................................83
非轉義輸齣 ...........................................84
if 語句 ....................................................85
unless .....................................................85
with ........................................................86
注釋 .......................................................87
自定義 Helpers .....................................87
Include ...................................................88
單獨使用Handlebars .................................88
Express.js 4 中Jade 和Handlebars 的用法 ............................................91
Jade 和 Express.js .................................92
Handlebars 和Express.js ........................92
項目:給博客添加Jade 模闆 .................93
layout.jade ..............................................94
index.jade ...............................................96
article.jade ..............................................97
login.jade ................................................98
post.jade .................................................99
admin.jade ............................................ 100
小結 ............................................................. 101
第5 章 MongoDB、Mongoskin 特性 .... 102
簡單且正確地安裝MongoDB .............. 103
如何運行Mongo 服務 ............................ 104
用控製颱操作Mongo ............................. 105
MongoDB shell 命令介紹 ...................... 106
Node.js 版原生MongoDB 驅動示例 .. 107
Mongoskin 的主要方法介紹 ................. 111
項目:用Mongoskin 把博客數據存儲到MongoDB ............................ 112
項目:在MongoDB 中添加seed 數據 ......................................... 112
項目:Mocha 測試 ............................... 113
項目:添加持久連接 ........................... 115
運行App .............................................. 126
小結 ............................................................. 127
第6 章 在Node.js 應用中使用session 和OAuth 進行用戶認證和授權 ............... 128
使用Express.js 中間件權限管理 ......... 128
基於token 的用戶認證 ........................... 129
基於session 的用戶認證 ........................ 130
項目實踐:為博客增加郵箱和密碼登錄功能 .......................................... 132
session 中間件 ..................................... 132
博客中的權限管理 ............................... 133
博客中的用戶授權 ............................... 136
運行應用 ............................................. 138
Node.js OAuth ........................................... 138
使用Node.js OAuth 實現Twitter OAuth 2.0 的示例 ................................ 139
Everyauth ............................................. 140
項目實踐:為博客增加Twitter OAuth 1.0 第三方登錄(使用Everyauth 實現) .......... 141
添加“使用Twitter 賬戶登錄”鏈接 .. 142
配置EveryauthTwitter 模塊 ................. 142
小結 ............................................................. 148
第7 章 使用ORM 類庫Mongoose 提升你的Node.js 數據 ......................... 149
安裝Mongoose ......................................... 150
用獨立的Mongoose 腳本建立數據庫連接 .................................. 150
Mongoose 的原型 .................................... 152
使用鈎子保持代碼的邏輯清晰 ............ 154
自定義靜態方法和實例方法 ................ 155
Mongoose 模型 ....................................... 155
使用population 建立關係和連接 ........ 158
嵌套的文檔 ............................................... 160
虛擬字段 .................................................... 161
修改原型的行為 ...................................... 162
Express.js + Mongoose =真正的MVC ..................................... 164
小結 ................................. 175
第8 章 使用Express.js 和Hapi 構建Node.js REST API 服務 ....................... 176
RESTful API 基礎 ................................... 177
項目依賴 .................................................... 179
使用Mocha 和Superagent 進行測試 . 180
使用Express 和Mongoskin 實現REST API 服務器 ...................................... 185
重構:使用Hapi 搭建REST API 服務器 .............................................. 192
小結 ............................................................. 199
第9 章 WebSocket、Socket.IO 和DerbyJS 的實時應用程序 .................... 200
什麼是WebSocket ................................... 200
用ws 模塊的例子介紹本地WebSocket 和Node.js .............................. 201
瀏覽器WebSocket 的實現 ................... 201
用ws 模塊實現Node.js 服務器 .......... 202
Socket.IO 和Express.js 的例子 ............ 204
用DerbyJS、Express.js 和MongoDB 搭建一個在綫協作的代碼編輯器例子 ........ 209
項目依賴和package.json ..................... 210
服務器端代碼 ...................................... 211
DerbyJS 應用程序 ................................ 213
DerbyJS 視圖 ....................................... 215
編輯器Tryout ...................................... 217
小結 ............................................................. 218
第10 章 為Node.js 應用上綫做準備 ..... 219
環境變量 .................................................... 219
生産環境下的Express.js ........................ 220
生産環境下的Socket.IO ........................ 222
錯誤處理 ................................ 223
錯誤處理工具Node.js domains ............ 225
使用Cluster 處理多綫程 ........................ 229
使用Cluster2 處理多綫程 ..................... 232
事件日誌和監控 ...................................... 233
監控 ..................................................... 233
生産環境下的REPL ............................ 235
Winston ................................................ 236
使用Papertrail 應用來管理日誌 ......... 237
使用Grunt 處理任務 ............................... 237
使用Git 來做版本控製和發布代碼 ... 241
安裝Git ............................................... 242
生成SSH 密鑰 .................................... 242
創建本地Git 倉庫................................ 245
將本地倉庫推送到GitHub .................. 245
在雲上使用TravisCI 運行測試用例 .. 246
TravisCI 配置 ...................................... 247
小結 ............................................................. 248
第11 章 部署Node.js 應用 ....................... 249
部署到Heroku .......................................... 249
部署到Amazon 網絡服務 ..................... 255
使用forever、Upstart 和init.d 保持Node.js 持續運行 ................ 259
forever .................................................. 259
Upstart .................................................. 260
init.d ..................................................... 262
盡可能使用Nginx 提供靜態資源 ....... 264
使用Varnish 緩存 .................................... 266
小結 ............................................................. 268
第12 章 Node.js 模塊發布和參與開源 . 269
推薦的目錄結構 ...................................... 270
所需模式 .................................................... 270
package.json............................................... 273
發布到NPM ............................................. 274
鎖定版本 .................................................... 274
小結 ............................................................. 275
結束語 ......................................................... 275
進階閱讀 .................................................... 276
勘誤和聯係方式 ...................................... 276
· · · · · · (
收起)