Node.js+Webpack開發實戰
內容描述
全書共9章,主要介紹了Nodejs web開發中常用類庫、http、express、egg、ws、socket.io、pemolo等熱門框架學習,內容涵蓋市場上大部分的開發工作。
目錄大綱
目 錄
第一部分 Node.js基礎篇
第1章 Node.js概述 3
1.1 NODE.JS是什麽 3
1.2 NODE.JS的運行原理 5
1.3 NODE.JS的應用場景 6
1.3.1 Node.js優缺點 6
1.3.2 應用場景 7
1.4 本章小結 7
第2章 搭建Node.js開發環境 8
2.1 安裝NODE.JS 8
2.1.1 Windows上安裝Node.js 8
2.1.2 Linux安裝Node.js 9
2.1.3 Ubuntu安裝Node.js 9
2.1.4 CentOS安裝Node.js 9
2.1.5 macOS安裝Node.js 10
2.2 安裝VSCODE編輯器 10
2.3 編寫HTTP服務器 11
2.4 本章小結 12
第3章 Node.js編程基礎 13
3.1 NPM包管理器介紹 13
3.1.1 更換NPM鏡像源 13
3.1.2 初始化項目 14
3.1.3 使用npm命令安裝模塊 14
3.1.4 本地安裝與全局安裝 14
3.1.5 生產依賴和開發依賴 15
3.1.6 其他npm命令 15
3.2 YARN包管理器介紹 16
3.2.1 安裝Yarn 16
3.2.2 Yarn常用命令 16
3.3 解讀PACKAGE.JSON文件 16
3.3.1 package.json字段說明 17
3.3.2 版本號說明 18
3.3.3 常見的版本號限定符 18
3.4 NODE.JS的模塊系統 18
3.4.1 module和exports 19
3.4.2 require 20
3.4.3 開發一個自定義模塊 21
3.5 NODE.JS的異步編程風格 22
3.5.1 回調函數 22
3.5.2 Promise 23
3.5.3 async/await 26
3.6 NODE.JS常用核心模塊 28
3.6.1 events模塊 28
3.6.2 fs模塊 29
3.6.3 stream接口 32
3.6.4 http模塊 35
3.7 本章小結 36
第二部分 後端的Node.js
第4章 最流行的Web框架——Express 39
4.1 框架簡介 39
4.2 快速開始 40
4.2.1 初始化項目 40
4.2.2 開始編碼 40
4.2.3 運行應用 41
4.2.4 小結 41
4.3 路由 41
4.3.1 路由方法 42
4.3.2 路由路徑 42
4.3.3 路由參數 44
4.3.4 路由函數 45
4.4 請求對象 47
4.4.1 獲取請求Cookie 49
4.4.2 獲取請求體 50
4.5 響應對象 50
4.6 中間件 54
4.6.1 全局中間件 54
4.6.2 路由中間件 55
4.6.3 可配置的中間件 55
4.6.4 Cookie中間件 57
4.6.5 響應時長中間件 57
4.6.6 靜態資源中間件 58
4.7 錯誤處理 59
4.7.1 同步錯誤 59
4.7.2 異步錯誤 60
4.7.3 自定義錯誤處理函數 60
4.7.4 多個錯誤處理函數 61
4.8 模板渲染 62
4.8.1 使用ejs模板 62
4.8.2 ejs語法 63
4.9 留言板項目開發 65
4.9.1 開始編碼 65
4.9.2 運行項目 67
4.10 本章小結 68
第5章 下一代Web開發框架——Koa 70
5.1 KOA簡介 70
5.2 BLUEBIRD 71
5.3 KOA快速開始 72
5.3.1 初始化項目 72
5.3.2 開始編碼 73
5.4 CONTEXT 73
5.5 COOKIE操作 75
5.5.1 Cookie簽名 75
5.5.2 寫入Cookie 75
5.5.3 讀取Cookie 76
5.5.4 中間件 76
5.5.5 請求日誌中間件 78
5.5.6 可配置的中間件 79
5.5.7 Cookie解析中間件 80
5.5.8 路由函數 81
5.5.9 多個路由函數 81
5.5.10 錯誤處理 82
5.5.11 多個錯誤處理器 83
5.6 路由系統 84
5.6.1 快速開始 85
5.6.2 路由對象 85
5.6.3 路由路徑 86
5.6.4 路由函數 86
5.6.5 路由級別中間件 87
5.6.6 路由前綴 87
5.6.7 模塊化路由 88
5.7 模板渲染 89
5.7.1 快速開始 89
5.7.2 模板佈局 90
5.8 博客項目實戰 92
5.8.1 功能梳理 92
5.8.2 項目代碼 93
5.8.3 效果展示 100
5.8.4 項目小結 102
5.9 本章小結 102
第6章 文檔型NoSQL數據庫——MongoDB 103
6.1 簡介 103
6.1.1 主要特點 103
6.1.2 概念 104
6.1.3 數據庫 104
6.1.4 集合 105
6.1.5 文檔 105
6.2 安裝 106
6.2.1 Windows 106
6.2.2 Linux 107
6.2.3 macOS 108
6.3 常用操作 109
6.3.1 創建數據庫 109
6.3.2 刪除數據庫 109
6.3.3 創建集合 110
6.3.4 查看集合 110
6.3.5 刪除集合 110
6.3.6 索引 111
6.3.7 插入文檔 112
6.3.8 更新文檔 112
6.3.9 刪除文檔 113
6.3.10 查詢文檔 113
6.3.11 其他查詢語法 115
6.4 NODE.JS集成 116
6.4.1 初始化項目 116
6.4.2 連接數據庫 116
6.4.3 mongoose的關鍵概念 117
6.4.4 Schema 117
6.4.5 Model 120
6.5 本章小結 121
第7章 最流行的關系型數據庫——MySQL 123
7.1 簡介 123
7.2 安裝 123
7.2.1 Windows 124
7.2.2 Linux 124
7.2.3 macOS 126
7.3 術語 126
7.4 索引 127
7.4.1 普通索引 127
7.4.2 唯一索引 127
7.4.3 聯合索引 128
7.5 事務 128
7.5.1 ACID原則 128
7.5.2 事務並發問題 129
7.5.3 隔離級別 129
7.5.4 事務控制語句 129
7.6 關聯關系 130
7.6.1 一對多關聯 130
7.6.2 一對一關聯 131
7.6.3 多對多關聯 131
7.7 數據庫操作 132
7.8 數據類型 133
7.9 數據表操作 135
7.9.1 創建數據表 135
7.9.2 刪除數據表 136
7.9.3 添加字段 136
7.9.4 刪除字段 137
7.9.5 修改字段 137
7.10 數據操作 137
7.10.1 插入數據 137
7.10.2 查詢數據 138
7.10.3 修改數據 139
7.10.4 刪除數據 139
7.11 本章小結 140
第8章 ORM框架——Sequelize 141
8.1 ORM 141
8.2 SEQUELIZE簡介 142
8.3 快速開始 142
8.4 構造方法 143
8.5 數據類型 144
8.6 模型定義 146
8.6.1 字段設置 146
8.6.2 模型選項 147
8.6.3 Hooks 148
8.6.4 生命周期函數 149
8.6.5 模型驗證器 150
8.6.6 模型方法 155
8.6.7 索引 156
8.6.8 數據庫同步 157
8.7 模型使用 157
8.7.1 插入數據 158
8.7.2 更新數據 159
8.7.3 刪除數據 160
8.7.4 查詢數據 161
8.7.5 查詢語法 164
8.7.6 事務 165
8.8 關聯 167
8.8.1 hasOne 167
8.8.2 belongsTo 169
8.8.3 hasMany 171
8.8.4 belongsToMany 173
8.9 本章小結 175
第9章 微博項目開發 176
9.1 功能分析 176
9.2 數據模型 177
9.3 開始編碼 177
9.3.1 初始化項目 177
9.3.2 項目目錄 178
9.3.3 路由設計 178
9.3.4 共享組件 178
9.3.5 中間件 179
9.3.6 模型代碼 180
9.3.7 生成數據表 183
9.3.8 業務代碼 184
9.3.9 路由代碼 188
9.3.10 視圖文件 192
9.3.11 Web應用引導文件 193
9.4 效果展示 194
9.5 項目代碼 196
9.6 本章小結 196
第10章 高性能內存型NoSQL數據庫——Redis 197
10.1 REDIS簡介 197
10.1.1 特點 197
10.1.2 應用場景 198
10.2 REDIS安裝 198
10.2.1 在Windows下安裝Redis 198
10.2.2 在Linux下安裝Redis 199
10.2.3 在macOS下安裝 Redis 199
10.3 REDIS支持的數據結構 200
10.3.1 String(字符串) 200
10.3.2 哈希表(Hash) 201
10.3.3 列表(List) 202
10.3.4 集合(Set) 203
10.3.5 有序集合(ZSet) 203
10.3.6 發布訂閱 204
10.4 NODE.JS集成REDIS 205
10.4.1 快速開始 205
10.4.2 Promise 206
10.5 本章小結 207
第11章 實時雙向Web技術——WebSocket 208
11.1 傳統的實時WEB技術 208
11.1.1 Ajax輪詢(Ajax Polling) 208
11.1.2 服務器推送(Comet) 209
11.2 WEBSOCKET 209
11.3 實現WEBSOCKET握手協議 210
11.3.1 握手協議過程 211
11.3.2 服務端代碼 211
11.3.3 客戶端代碼 212
11.4 使用WS模塊開發聊天室 212
11.4.1 安裝依賴 213
11.4.2 服務端代碼 213
11.4.3 客戶端代碼 214
11.5 本章小結 215
第三部分 前端中的Node.js
第12章 迅速發展的前端技術 219
12.1 模塊系統 219
12.1.1 CommonJS 220
12.1.2 AMD 220
12.1.3 CMD 221
12.1.4 ES6模塊化 221
12.2 新語言 222
12.2.1 ES6 222
12.2.2 TypeScript 222
12.2.3 Less 223
12.2.4 SCSS 223
12.3 新框架 224
12.3.1 AngularJS 224
12.3.2 React 224
12.3.3 Vue 224
12.3.4 Angular 225
12.4 構建工具 225
12.4.1 Grunt 226
12.4.2 Gulp 226
12.4.3 Webpack 227
12.5 本章小結 228
第13章 Webpack起步 229
13.1 安裝 229
13.2 示例項目 230
13.3 LOADER 231
13.3.1 CSS處理 231
13.3.2 圖片處理 232
13.4 PLUGIN 234
13.4.1 提取CSS 234
13.4.2 自動更新HTML中的資源引用 236
13.5 開發服務器 237
13.6 核心概念 239
13.7 本章小結 239
第14章 Webpack配置 240
14.1 MODE 241
14.2 ENTRY 和 CONTEXT 241
14.2.1 不配置Context的情況 241
14.2.2 配置Context的情況 242
14.3 OUTPUT 242
14.3.1 chunkFilename 243
14.3.2 path 243
14.3.3 publicPath 244
14.3.4 libraryTarget和library 244
14.4 MODULE 246
14.4.1 noParse 246
14.4.2 rules 247
14.5 RESOLVE 248
14.5.1 alias 248
14.5.2 extensions 249
14.5.3 mainFields 249
14.5.4 modules 250
14.6 DEVTOOL 250
14.7 EXTERNALS 250
14.8 DEVSERVER 251
14.9 PLUGINS 252
14.10 完整示例 252
14.11 本章小結 254
第15章 Vue實戰 255
15.1 HELLO WORLD 255
15.2 配置WEBPACK 257
15.2.1 Loader和Plugin 257
15.2.2 安裝依賴模塊 257
15.2.3 編寫配置文件 258
15.2.4 執行構建 259
15.3 生產構建 259
15.3.1 Webpack配置 259
15.3.2 package.json修改 260
15.4 TYPESCRIPT支持 261
15.4.1 TypeScript配置 261
15.4.2 Webpack配置 262
15.4.3 App.vue 263
15.5 本章小結 264
第16章 React實戰 265
16.1 JSX 265
16.2 BABEL 266
16.3 TYPESCRIPT 268
16.4 本章小結 271
第17章 服務端渲染 272
17.1 SSR原理 273
17.2 添加SSR的WEBPACK.CONFIG.JS 273
17.3 添加SSR的入口文件 274
17.4 添加SSR打包命令 275
17.5 執行構建 275
17.6 添加NODE.JS HTTP服務器 275
17.7 目錄結構 276
17.8 運行應用 276
17.9 本章小結 277
第18章 多頁應用腳手架 278
18.1 項目結構 278
18.2 開發步驟 279
18.2.1 初始化項目與安裝依賴 279
18.2.2 配置 280
18.3 業務代碼 282
18.4 本章小結 283
第19章 性能優化 284
19.1 限定WEBPACK處理文件範圍 284
19.2 DLLPLUGIN 285
19.3 HAPPYPACK 287
19.4 TREE-SHAKING 288
19.5 按需加載 289
19.6 提取公共代碼 289
19.7 熱更新 290
19.8 本章小結 290
第20章 編寫自定義Loader 291
20.1 基本LOADER 291
20.2 LOADER選項 293
20.3 異步LOADER 294
20.4 "RAW" LOADER 295
20.5 讀取LOADER配置文件 295
20.5.1 項目結構 295
20.5.2 執行構建 297
20.6 本章小結 297
第21章 編寫自定義插件 298
21.1 基本構建流程 298
21.2 插件示例 299
21.3 COMPILER與COMPILATION對象 299
21.4 TAPABLE 300
21.5 常用操作 301
21.5.1 讀取輸出資源、模塊及依賴 301
21.5.2 修改輸出資源 302
21.6 插件編寫實例 302
21.6.1 生成清單文件 303
21.6.2 構建結果上傳到CDN 304
21.7 本章小結 306
作者介紹
夏磊
畢業於湖南工業大學網絡工程專業,擁有多年研發經驗。
在過去的幾年裡,他還是很多開源項目的貢獻者。
精通PHP腳本開發、Node.js/Golang服務端開發以及JavaScript開發,善於把握與應用新技術,
博客和公眾號上有大量的Web相關技術文章,深受讀者好評。
著有圖書《ThinkPHP實戰》和《ThinkPHP5實戰》。