Node.js 開發實戰教程 (慕課版)
內容描述
本書以Node.js知識和框架為主線,詳細介紹Node.js開發的基礎知識。全書分為10章,內容包括Node.js入門、Node.js編程基礎、模塊與包的管理與使用、文件系統操作、網絡編程、SQL數據庫操作、MongoDB數據庫操作、Node.js框架與Express、應用程序測試與部署、綜合實例——構建博客網站。本書從編程基礎講起,突出實戰操作,通過典型案例詳細講解Node.js開發中最常用的原生模塊與第三方框架和模塊。
目錄大綱
第 1章 Node.js入門 1
1.1 Node.js簡介 1
1.1.1 什麽是Node.js 1
1.1.2 Node.js的特點 2
1.1.3 Node.js的應用場合 5
1.2 部署Node.js開發環境 6
1.2.1 在Windows系統上安裝Node.js 6
1.2.2 在Linux系統上安裝Node.js 7
1.2.3 管理Node.js版本 8
1.2.4 交互式運行環境——REPL 9
1.2.5 安裝開發工具Visual Studio Code 10
1.3 開始開發Node.js應用程序 10
1.3.1 實戰演練——構建第 一個Node.js應用程序 10
1.3.2 運行Node.js程序 12
1.3.3 調試Node.js程序 13
1.4 本章小結 16
習題 16
第 2章 Node.js編程基礎 17
2.1 JavaScript基本語法 17
2.1.1 JavaScript版本 17
2.1.2 JavaScript運行環境 18
2.1.3 JavaScript語句與註釋 18
2.1.4 變量 19
2.1.5 數據類型 21
2.1.6 流程控制 23
2.1.7 函數 24
2.1.8 類 27
2.1.9 嚴格模式 28
2.1.10 JavaScript編程規範 29
2.2 Node.js回調函數 30
2.2.1 什麽是回調函數 30
2.2.2 回調函數示例 31
2.3 Node.js事件機制 31
2.3.1 事件循環 32
2.3.2 Node.js事件的監聽與觸發 33
2.4 Node.js全局對象 34
2.4.1 全局變量filename和dirname 35
2.4.2 console模塊 35
2.4.3 process對象 36
2.5 Node.js的定時器 39
2.5.1 設置定時器 39
2.5.2 取消定時器 40
2.5.3 Timeout和Immediate類 40
2.5.4 setImmediate()方法
與setTimeout()方法的對比 40
2.5.5 process.nextTick()與setImmediate()的對比 41
2.6 Buffer數據類型 41
2.6.1 創建Buffer實例 42
2.6.2 Buffer用於編碼轉換 42
2.6.3 將Buffer實例轉換為JSON對象 43
2.6.4 Buffer實例基本操作 43
2.7 Node.js的流 45
2.7.1 概述 45
2.7.2 可讀流 46
2.7.3 可寫流 47
2.7.4 管道讀寫操作 48
2.8 實戰演練——提供圖片瀏覽服務 49
2.8.1 實現思路 49
2.8.2 編寫代碼 50
2.8.3 運行程序 51
2.9 本章小結 52
習題 52
第3章 模塊與包的管理和使用 54
3.1 Node.js的模塊系統 54
3.1.1 Node.js為什麽要使用模塊 54
3.1.2 自定義模塊 55
3.1.3 導入模塊 55
3.1.4 使用module.exports定義模塊 55
3.1.5 exports與module.exports的關系 56
3.1.6 模塊加載順序 57
3.2 使用Node.js的核心模塊 59
3.2.1 os模塊——提供基本的系統操作方法 59
3.2.2 util模塊——提供實用工具 60
3.2.3 path模塊——處理和轉換文件路徑 62
3.2.4 url模塊——URL處理與解析 63
3.2.5 querystring模塊——URL查詢字符串處理和解析 64
3.3 Node.js包的管理與使用 65
3.3.1 什麽是npm 65
3.3.2 理解包與模塊 66
3.3.3 npm包管理器 66
3.3.4 查找和選擇包 66
3.3.5 使用npm命令安裝包 70
3.3.6 使用語義版本控制管理代碼(包) 71
3.3.7 使用package.json文件管理本地安裝包 72
3.3.8 包的其他操作 74
3.3.9 使用淘寶npm鏡像 74
3.4 實戰演練——抓取網頁中的圖片 75
3.4.1 技術準備 75
3.4.2 實現思路 76
3.4.3 創建項目目錄並準備package.json文件 76
3.4.4 安裝request和cheerio包 77
3.4.5 定義一個模塊用於解析網頁文檔 77
3.4.6 編寫主入口文件index.js 77
3.4.7 運行程序 78
3.5 本章小結 79
習題 79
第4章 文件系統操作 80
4.1 Node.js的文件系統基礎 80
4.1.1 fs模塊簡介 80
4.1.2 同步文件操作與異步文件操作 81
4.1.3 文件路徑 82
4.1.4 文件模式 83
4.1.5 文件系統標志 84
4.1.6 文件描述符 84
4.2 文件與目錄基本操作 85
4.2.1 打開文件 85
4.2.2 獲取文件信息 85
4.2.3 讀取文件 87
4.2.4 寫入文件 88
4.2.5 文件的其他基本操作 90
4.2.6 目錄的基本操作 91
4.3 文件系統的高級操作 92
4.3.1 使用文件操作的流接口 92
4.3.2 文件遍歷 93
4.3.3 文件監視 94
4.3.4 操作JSON文件 96
4.3.5 讀取GBK格式的文件 97
4.4 實戰演練——操作表格文件 98
4.4.1 使用CSV包的準備工作 98
4.4.2 從CSV文件中讀取並解析數據 98
4.4.3 將記錄轉換為CSV文本並保存到CSV文件中 100
4.4.4 對CSV數據進行轉換處理 100
4.4.5 組合使用多個子模塊來處理CSV數據 101
4.5 本章小結 101
習題 101
第5章 網絡編程 103
5.1 TCP服務器與客戶端 103
5.1.1 TCP基礎 103
5.1.2 net模塊提供的API 104
5.1.3 創建TCP服務器和客戶端 106
5.1.4 接收和處理物聯網數據 107
5.2 UDP服務器與客戶端 108
5.2.1 UDP基礎 108
5.2.2 dgram模塊提供的API 109
5.2.3 創建UDP服務器和客戶端 110
5.2.4 通過UDP實現文件上傳 111
5.3 HTTP服務器和客戶端 112
5.3.1 HTTP基礎 112
5.3.2 實現HTTP服務器 112
5.3.3 實現HTTP客戶端 115
5.3.4 HTTP服務器獲取並解析請求內容 117
5.4 使用WebSocket實現瀏覽器與服務器的實時通信 119
5.4.1 WebSocket簡介 119
5.4.2 使用Node.js實現WebSocket服務器和客戶端 120
5.4.3 瀏覽器客戶端 122
5.4.4 Socket.IO 123
5.5 實戰演練——構建實時聊天室 126
5.5.1 準備Web框架 126
5.5.2 編寫服務器端程序 128
5.5.3 編寫客戶端程序 129
5.5.4 測試 130
5.5 本章小結 131
習題 131
第6章 SQL數據庫操作 133
6.1 操作MySQL數據庫 133
6.1.1 MySQL服務器安裝和基本使用 133
6.1.2 Node.js的MySQL驅動 136
6.1.3 連接MySQL數據庫 136
6.1.4 執行數據庫操作 137
6.1.5 記錄的增查改刪操作 138
6.1.6 防止SQL註入攻擊 139
6.1.7 使用流式查詢 140
6.1.8 使用預處理語句 140
6.1.9 使用連接池 141
6.2 優雅地編寫異步代碼 142
6.2.1 Promise 142
6.2.2 Generator 144
6.2.3 co模塊 146
6.2.4 async/await 147
6.2.5 使用Promise包裝器操作MySQL數據庫 151
6.3 使用Node.js ORM框架操作關系數據庫 152
6.3.1 Sequelize簡介 152
6.3.2 Sequelize的基本使用 152
6.3.3 使用Sequelize的關聯 156
6.4 實戰演練——圖書借閱記錄管理 158
6.4.1 編寫模型部分代碼 158
6.4.2 編寫數據操作部分代碼 159
6.5 本章小結 161
習題 161
第7章 MongoDB數據庫操作 163
7.1 MongoDB數據庫基礎 163
7.1.1 NoSQL數據庫簡介 163
7.1.2 MongoDB數據庫簡介 164
7.1.3 MongoDB基本概念 164
7.1.4 MongoDB的安裝和基本使用 166
7.2 使用原生驅動連接和操作MongoDB數據庫 168
7.2.1 連接到MongoDB 169
7.2.2 添加MongoDB文檔 169
7.2.3 查詢MongoDB文檔 170
7.2.4 更改MongoDB文檔 171
7.2.5 刪除MongoDB文檔 172
7.2.6 為MongoDB集合創建索引 172
7.2.7 以“同步”方式編寫MongoDB操作代碼 172
7.3 使用Mongoose操作MongoDB數據庫 173
7.3.1 Mongoose基本概念 173
7.3.2 使用Mongoose的基本步驟 174
7.3.3 文檔操作 177
7.3.4 數據驗證 180
7.3.5 中間件 181
7.3.6 子文檔 183
7.3.7 Mongoose對Promise的支持 184
7.4 實戰演練——開發圖書使用管理操作接口 184
7.4.1 Mongoose的填充功能 185
7.4.2 模式和模型定義 186
7.4.3 編寫數據庫操作接口 187
7.4.4 調用數據庫操作接口 188
7.5 本章小結 189
習題 189
第8章 Node.js框架與Express 190
8.1 Node.js框架概述 190
8.1.1 MVC框架 190
8.1.2 REST API框架 191
8.1.3 全棧框架 191
8.1.4 實時框架 192
8.1.5 Node.js框架的選擇 192
8.2 Express框架基礎 192
8.2.1 簡單的“Hello World”示例程序 193
8.2.2 使用Express生成器創建項目腳手架 193
8.2.3 Express工作機制 195
8.3 Express路由 197
8.3.1 路由結構 197
8.3.2 路由方法 197
8.3.3 路由路徑 198
8.3.4 路由參數 198
8.3.5 路由處理程序 199
8.3.6 響應方法 200
8.3.7 app.route()方法 200
8.3.8 Express路由器 201
8.4 Express中間件 201
8.4.1 進一步理解中間件 202
8.4.2 使用中間件 202
8.4.3 編寫自己的中間件 205
8.5 視圖與模板引擎 207
8.5.1 模板引擎概述 207
8.5.2 EJS語法 208
8.5.3 EJS模板引擎的使用 209
8.6 Express與數據庫集成 210
8.7 Express錯誤處理 211
8.7.1 捕獲錯誤 211
8.7.2 默認錯誤處理程序 212
8.7.3 編寫錯誤處理程序 212
8.8 實戰演練——圖書信息管理的REST API接口 213
8.8.1 瞭解REST API 213
8.8.2 演練目標 215
8.8.3 實現思路與技術準備 215
8.8.4 創建項目 216
8.8.5 編寫數據庫接口程序 216
8.8.6 編寫主入口文件 218
8.8.7 運行程序進行測試 220
8.8.8 控制API版本 221
8.9 本章小結 222
習題 222
第9章 應用程序測試與部署 224
9.1 Node.js應用程序的單元測試 224
9.1.1 單元測試概述 224
9.1.2 使用斷言編寫簡單的測試腳本 225
9.1.3 使用測試框架Mocha進行單元測試 229
9.2 實戰演練——為應用程序進行單元測試 232
9.2.1 熟悉supertest測試庫 232
9.2.2 編寫測試腳本 235
9.2.3 執行自動化測試 236
9.3 Node.js應用程序的部署和運行管理 237
9.3.1 Node.js應用程序的部署方式 237
9.3.2 讓Node.js應用程序更穩定地運行 238
9.3.3 使用PM2管理Node.js應用程序 239
9.3.4 使用PM2的配置文件管理應用程序 241
9.3.5 在Windows平臺上配置開機自動啟動Node.js應用程序 243
9.4 本章小結 246
習題 246
第 10章 綜合實例——構建博客網站 248
10.1 項目準備 248
10.1.1 項目概述 248
10.1.2 創建項目腳手架 249
10.2 數據庫設計與實現 250
10.2.1 數據存儲和組織技術 250
10.2.2 定義存儲文章信息的模型 251
10.2.3 定義存儲用戶信息的模型 253
10.3 用戶界面設計與實現 255
10.3.1 前端技術 256
10.3.2 靜態文件 256
10.3.3 公共模板 257
10.3.4 內容模板 258
10.4 業務邏輯設計與實現 260
10.4.1 使用passport實現用戶認證 260
10.4.2 session控制 263
10.4.3 使用Express中間件 264
10.4.4 定義控制器處理具體業務 268
10.4.5 路由控制 271
10.4.6 主文件 272
10.5 本章小結 273
習題 273
作者介紹
钟小平,青岛云集技术有限公司工程师,出版畅销书《网络操作系统——Windows Server 2012 R2配置与管理》《CentOS Linux系统管理与运维》《OpenStack云计算实战》《Ubuntu Linux操作系统》等。