定 價:¥89.00
作 者: | (英)亞歷克斯·楊,(美)布拉德利·馬克,(美)麥克·坎特倫 |
出版社: | 人民郵電出版社 |
叢編項(xiàng): | |
標(biāo) 簽: | 暫缺 |
ISBN: | 9787115487308 | 出版時間: | 2018-08-01 | 包裝: | 平裝 |
開本: | 16開 | 頁數(shù): | 字?jǐn)?shù): |
第 一部分 Node基礎(chǔ)知識介紹
第 1 章 歡迎進(jìn)入Node.js的世界 2
1.1 一個典型的Node Web應(yīng)用程序 2
1.1.1 非阻塞I/O 3
1.1.2 事件輪詢 4
1.2 ES2015、Node和V8 5
1.2.1 Node與V8 7
1.2.2 使用特性組 8
1.2.3 了解Node的發(fā)布計劃 8
1.3 安裝Node 8
1.4 Node自帶的工具 9
1.4.1 npm 9
1.4.2 核心模塊 10
1.4.3 調(diào)試器 11
1.5 三種主流的Node程序 12
1.5.1 Web應(yīng)用程序 12
1.5.2 命令行工具和后臺程序 13
1.5.3 桌面程序 14
1.5.4 適合Node的應(yīng)用程序 14
1.6 總結(jié) 15
第 2 章 Node編程基礎(chǔ) 16
2.1 Node功能的組織及重用 16
2.2 開始一個新的Node項(xiàng)目 18
2.3 用module.exports微調(diào)模塊的創(chuàng)建 20
2.4 用node_modules重用模塊 22
2.5 注意事項(xiàng) 23
2.6 使用異步編程技術(shù) 24
2.7 用回調(diào)處理一次性事件 25
2.8 用事件發(fā)射器處理重復(fù)性事件 28
2.8.1 事件發(fā)射器示例 28
2.8.2 響應(yīng)只應(yīng)該發(fā)生一次的事件 29
2.8.3 創(chuàng)建事件發(fā)射器:一個PUB/SUB的例子 29
2.8.4 擴(kuò)展事件監(jiān)聽器:文件監(jiān)視器 32
2.9 異步開發(fā)的難題 34
2.10 異步邏輯的順序化 35
2.11 何時使用串行流程控制 36
2.12 實(shí)現(xiàn)串行化流程控制 37
2.13 實(shí)現(xiàn)并行化流程控制 39
2.14 利用社區(qū)里的工具 41
2.15 總結(jié) 43
第 3 章 Node Web程序是什么 44
3.1 了解Node Web程序的結(jié)構(gòu) 45
3.1.1 開始一個新的Web程序 45
3.1.2 跟其他平臺比一比 47
3.1.3 然后呢 47
3.2 搭建一個RESTful Web服務(wù) 47
3.3 添加數(shù)據(jù)庫 50
3.3.1 制作自己的模型API 51
3.3.2 讓文章可讀并把它存起來 53
3.4 添加用戶界面 54
3.4.1 支持多種格式 54
3.4.2 渲染模板 55
3.4.3 用npm管理客戶端依賴項(xiàng) 56
3.5 總結(jié) 57
D二部分 Node的Web開發(fā)
第 4 章 前端構(gòu)建系統(tǒng) 60
4.1 了解基于Node的前端開發(fā) 60
4.2 用npm運(yùn)行腳本 61
4.2.1 創(chuàng)建定制的npm腳本 62
4.2.2 配置前端構(gòu)建工具 63
4.3 用Gulp實(shí)現(xiàn)自動化 63
4.3.1 把Gulp添加到項(xiàng)目中 64
4.3.2 Gulp任務(wù)的創(chuàng)建及運(yùn)行 64
4.3.3 監(jiān)測變化 66
4.3.4 在大項(xiàng)目中把任務(wù)分散到不同文件中 66
4.4 用Webpack構(gòu)建Web程序 67
4.4.1 使用打包器和插件 67
4.4.2 配置和運(yùn)行Webpack 68
4.4.3 用Webpack開發(fā)服務(wù)器 68
4.4.4 加載CommonJS模塊和靜態(tài)資源 70
4.5 總結(jié) 71
第 5 章 服務(wù)器端框架 72
5.1 用戶畫像 72
5.1.1 菲爾:代理kai發(fā)者 73
5.1.2 納迪娜:開源kai發(fā)者 73
5.1.3 愛麗絲:產(chǎn)品kai發(fā)者 73
5.2 框架是什么 74
5.3 Koa 74
5.3.1 設(shè)置 76
5.3.2 定義路由 76
5.3.3 REST API 77
5.3.4 優(yōu)點(diǎn) 77
5.3.5 弱點(diǎn) 77
5.4 Kraken 77
5.4.1 設(shè)置 77
5.4.2 定義路由 78
5.4.3 REST API 79
5.4.4 優(yōu)點(diǎn) 79
5.4.5 弱點(diǎn) 79
5.5 hapi 79
5.5.1 設(shè)置 80
5.5.2 定義路由 80
5.5.3 插件81
5.5.4 REST API 82
5.5.5 優(yōu)點(diǎn) 83
5.5.6 弱點(diǎn) 83
5.6 Sails.js 83
5.6.1 設(shè)置 83
5.6.2 定義路由 84
5.6.3 REST API 84
5.6.4 優(yōu)點(diǎn) 85
5.6.5 弱點(diǎn) 85
5.7 DerbyJS 85
5.7.1 設(shè)置 85
5.7.2 定義路由 86
5.7.3 REST API 87
5.7.4 優(yōu)點(diǎn) 87
5.7.5 弱點(diǎn) 87
5.8 Flatiron.js 87
5.8.1 設(shè)置 88
5.8.2 定義路由 88
5.8.3 REST API 89
5.8.4 優(yōu)點(diǎn) 90
5.8.5 弱點(diǎn) 90
5.9 LoopBack 90
5.9.1 設(shè)置 91
5.9.2 定義路由 92
5.9.3 REST API 92
5.9.4 優(yōu)點(diǎn) 93
5.9.5 弱點(diǎn) 93
5.10 比較 93
5.11 編寫模塊化代碼 95
5.12 用戶選擇 95
5.13 總結(jié) 95
第 6 章 深入了解Connect和Express 96
6.1 Connect 96
6.1.1 創(chuàng)建Connect程序 97
6.1.2 了解Connect中間件的工作機(jī)制 97
6.1.3 組合中間件 98
6.1.4 中間件的順序 98
6.1.5 創(chuàng)建可配置的中間件 99
6.1.6 使用錯誤處理中間件 101
6.2 Express 103
6.2.1 生成程序框架 103
6.2.2 Express和程序的配置 107
6.2.3 渲染視圖 109
6.2.4 Express路由入門 113
6.2.5 用戶認(rèn)證 120
6.2.6 注冊新用戶 124
6.2.7 已注冊用戶登錄 130
6.2.8 用戶加載中間件 133
6.2.9 創(chuàng)建REST API 134
6.2.10 啟用內(nèi)容協(xié)商 140
6.3 總結(jié) 142
第 7 章 Web程序的模板 143
7.1 用模板保持代碼的整潔性 143
7.2 Embedded JavaScript的模板 147
7.2.1 創(chuàng)建模板 148
7.2.2 將EJS集成到你的程序中 149
7.2.3 在客戶端程序中使用EJS 150
7.3 使用Mustache模板語言與Hogan 151
7.3.1 創(chuàng)建模板 151
7.3.2 Mustache標(biāo)簽 151
7.3.3 微調(diào)Hogan 154
7.4 用Pug做模板 154
7.4.1 Pug基礎(chǔ)知識 155
7.4.2 Pug模板中的邏輯 157
7.4.3 組織Pug模板 159
7.5 總結(jié) 163
第 8 章 存儲數(shù)據(jù) 164
8.1 關(guān)系型數(shù)據(jù)庫 164
8.2 PostgreSQL 164
8.2.1 安裝及配置 164
8.2.2 創(chuàng)建數(shù)據(jù)庫 165
8.2.3 從Node中連接Postgres 165
8.2.4 定義表 166
8.2.5 插入數(shù)據(jù) 166
8.2.6 更新數(shù)據(jù) 166
8.2.7 查詢數(shù)據(jù) 167
8.3 Knex 167
8.3.1 查詢構(gòu)建器 168
8.3.2 用Knex實(shí)現(xiàn)連接和查詢 168
8.3.3 切換數(shù)據(jù)庫 170
8.3.4 注意抽象漏洞 171
8.4 MySQL和PostgreSQL 171
8.5 ACID保證 172
8.5.1 原子性:無論成敗,事務(wù)必須整體執(zhí)行 172
8.5.2 一致性:始終確保約束條件 172
8.5.3 隔離性:并發(fā)事務(wù)不會相互干擾 172
8.5.4 耐用性:事務(wù)是永久性的 173
8.6 NoSQL 173
8.7 分布式數(shù)據(jù)庫 173
8.8 MongoDB 174
8.8.1 安裝和配置 174
8.8.2 連接MongoDB 174
8.8.3 插入文檔 175
8.8.4 查詢 176
8.8.5 使用MongoDB標(biāo)識 177
8.8.6 使用復(fù)制集 178
8.8.7 了解寫關(guān)注 180
8.9 鍵/值存儲 181
8.10 Redis 181
8.10.1 安裝和配置 182
8.10.2 初始化 182
8.10.3 處理鍵/值對 183
8.10.4 處理鍵 184
8.10.5 編碼與數(shù)據(jù)類型 184
8.10.6 使用散列表 186
8.10.7 使用列表 186
8.10.8 使用集合 187
8.10.9 用頻道實(shí)現(xiàn)發(fā)布/訂閱功能 188
8.10.10 提升性能 189
8.11 嵌入式數(shù)據(jù)庫 189
8.12 LevelDB 190
8.12.1 LevelUP與LevelDOWN 190
8.12.2 安裝 191
8.12.3 API概覽 191
8.12.4 初始化 191
8.12.5 鍵/值編碼 192
8.12.6 鍵/值對的讀寫 192
8.12.7 可插拔的后臺 193
8.12.8 模塊化數(shù)據(jù)庫 194
8.13 昂貴的序列化和反序列化 195
8.14 瀏覽器內(nèi)存儲 196
8.14.1 Web存儲:localStorage和sessionStorage 196
8.14.2 值的讀寫 197
8.14.3 localForage 199
8.14.4 讀和寫 199
8.15 存儲托管 200
8.16 選哪個數(shù)據(jù)庫 201
8.17 總結(jié) 201
第 9 章 測試Node程序 202
9.1 單元測試 203
9.1.1 assert模塊 203
9.1.2 Mocha 206
9.1.3 Vows 211
9.1.4 Chai 213
9.1.5 Should.js 214
9.1.6 Sinon.JS的探測器和存根 216
9.2 功能測試 218
9.3 處理失敗的測試 221
9.3.1 獲取更詳細(xì)的日志 221
9.3.2 更好的棧跟蹤 223
9.4 總結(jié) 224
第 10 章 Node程序的部署及運(yùn)維 225
10.1 安置Node程序 225
10.1.1 平臺即服務(wù) 226
10.1.2 服務(wù)器 227
10.1.3 容器 228
10.2 部署的基礎(chǔ)知識 229
10.2.1 從Git庫部署 229
10.2.2 保證Node不掉線 230
10.3 在線時長和性能的zui大化 231
10.3.1 用Upstart保證在線時長 232
10.3.2 集群API:充分利用多核處理器 233
10.3.3 靜態(tài)文件及代理 235
10.4 總結(jié) 236
第三部分 超越Web開發(fā)
第 11 章 編寫命令行程序 238
11.1 了解慣例和理念 238
11.2 parse-json 239
11.3 使用命令行參數(shù) 239
11.3.1 解析命令行參數(shù) 239
11.3.2 驗(yàn)證參數(shù) 240
11.3.3 將stdin作為文件傳遞 241
11.4 用npm分享命令行工具 242
11.5 用管道連接腳本 243
11.5.1 將數(shù)據(jù)通過管道傳給parse-json 243
11.5.2 處理錯誤和退出碼 243
11.5.3 在Node中使用管道 245
11.5.4 管道與命令的執(zhí)行順序 246
11.6 解釋真正的腳本 247
11.7 總結(jié) 247
第 12 章 用Electron征服桌面 248
12.1 認(rèn)識Electron 248
12.1.1 Electron的技術(shù)?!?49
12.1.2 界面設(shè)計 250
12.2 創(chuàng)建一個Electron程序 250
12.3 搭建完整的桌面端程序 252
12.3.1 引導(dǎo)React與Babel 253
12.3.2 安裝依賴項(xiàng) 253
12.3.3 設(shè)置Webpack 254
12.4 React程序 255
12.4.1 定義Request組件 256
12.4.2 定義Response組件 258
12.4.3 React組件之間的通信 261
12.5 構(gòu)建與分發(fā) 261
12.5.1 用Electron打包器構(gòu)建程序 261
12.5.2 打包 262
12.6 總結(jié) 263
附錄 A 安裝Node 264
附錄 B 自動化的網(wǎng)絡(luò)抓取 267
附錄 C Connect的官方中間件 277
術(shù)語表 307