Node.js是一個(gè)基于Chrome V8引擎的JavaScript運(yùn)行環(huán)境,用來編寫服務(wù)器端程序。Node.js是新興的開發(fā)工具,也是目前發(fā)展較快的開發(fā)工具之一。近幾年來,隨著Node.js的發(fā)展,越來越多的開發(fā)人員選擇用它構(gòu)建Web應(yīng)用。
本書較為系統(tǒng)地介紹了目前Node.js應(yīng)用開發(fā)中涉及的基礎(chǔ)知識(shí)和核心技術(shù),并通過案例介紹了基于Express和Koa框架的項(xiàng)目開發(fā)。本書著重實(shí)際應(yīng)用,案例及實(shí)訓(xùn)項(xiàng)目的實(shí)用性和可操作性強(qiáng),能夠幫助讀者學(xué)以致用。全書共分10章,主要包括Node.js認(rèn)知、模塊機(jī)制、Node.js異步編程、Buffer緩存區(qū)和文件系統(tǒng)、構(gòu)建Web應(yīng)用、Express框架、Express模板引擎、數(shù)據(jù)庫應(yīng)用開發(fā)、Koa框架、項(xiàng)目?jī)?yōu)化及線上部署等Web應(yīng)用開發(fā)中為重要的內(nèi)容。
本書可作為本科和高職院校計(jì)算機(jī)相關(guān)專業(yè)的教材,也可作為計(jì)算機(jī)培訓(xùn)用教材,還可作為計(jì)算機(jī)相關(guān)技術(shù)愛好者的自學(xué)參考書。
1.內(nèi)容細(xì)致,組織合理
本書由淺入深介紹了Node.js的基礎(chǔ)知識(shí)及核心技術(shù),并結(jié)合當(dāng)下軟件技術(shù)專業(yè)學(xué)生的特點(diǎn),以碎片化知識(shí)點(diǎn)為單元,通過理論與實(shí)踐相結(jié)合的方式,幫助讀者在學(xué)習(xí)Node.js知識(shí)的同時(shí)進(jìn)行項(xiàng)目實(shí)踐。
2.結(jié)合實(shí)際,突出實(shí)踐
本書包含了大量企業(yè)工程師精心設(shè)計(jì)的示例和項(xiàng)目實(shí)訓(xùn),體現(xiàn)了“教、學(xué)、做”一體化思想,方便讀者快速上手,培養(yǎng)讀者的實(shí)際操作能力。示例和項(xiàng)目實(shí)踐有詳細(xì)的代碼說明和步驟。
3.資源豐富,立體教學(xué)
本書配備了豐富的立體化教學(xué)資源,包括教師專項(xiàng)教學(xué)PPT、源代碼、習(xí)題答案以及各章節(jié)的在線教學(xué)視頻,可按書中指示獲取。附錄中整理了JavaScript語言知識(shí)點(diǎn)摘要,方便讀者查閱學(xué)習(xí)。
唐小燕,碩士研究生,副教授/工程師,承擔(dān)過專業(yè)方向負(fù)責(zé)人、二級(jí)督導(dǎo)組長(zhǎng)等工作。參加2020年江蘇省職業(yè)院校信息化大賽團(tuán)隊(duì)獲一等獎(jiǎng)、江蘇省高校微課教學(xué)比賽獲二等獎(jiǎng);2019年江蘇省職業(yè)院校信息化大賽團(tuán)隊(duì)獲二等獎(jiǎng)。近五年來,教學(xué)質(zhì)量考核均為“優(yōu)秀”,兩次榮獲學(xué)院優(yōu)秀學(xué)生工作者、教學(xué)創(chuàng)新創(chuàng)意大賽銅獎(jiǎng)。主持2門院級(jí)在線開放課程建設(shè),參與多門省級(jí)級(jí)精品在線開放課建設(shè)。曾獲學(xué)校金講臺(tái)教師、巾幗標(biāo)兵、師德標(biāo)兵、優(yōu)秀督導(dǎo)、優(yōu)秀共產(chǎn)黨員等多項(xiàng)榮譽(yù)稱號(hào)。
劉洪武,碩士研究生,教授,畢業(yè)于中國(guó)人民解放軍國(guó)防科技大學(xué)。主持省級(jí)軟件技術(shù)教學(xué)資源庫1個(gè),主持院級(jí)人工智能教學(xué)資源庫1個(gè);參與多門省級(jí)在線開放課程建設(shè)。2019年獲得職業(yè)院校教學(xué)能力大賽國(guó)賽二等獎(jiǎng);2021年獲得河北省教學(xué)成果獎(jiǎng)特等獎(jiǎng);近年指導(dǎo)學(xué)生獲得職業(yè)技能大賽獲得國(guó)賽二等獎(jiǎng)2項(xiàng)。
虞菊花,碩士研究生,講師。出版國(guó)規(guī)教材1本,參與多本教材的編寫。主持1門1門省級(jí)在線開放課程建設(shè),參與多門省級(jí)、校級(jí)在線開放課程的建設(shè)。參加2020年江蘇省職業(yè)院校信息化大賽團(tuán)隊(duì)獲二等獎(jiǎng);2017年江蘇省高校微課教學(xué)比賽獲一等獎(jiǎng),連續(xù)兩年指導(dǎo)學(xué)生參加江蘇省高等職業(yè)院校技能大賽獲一等獎(jiǎng)。曾獲學(xué)校優(yōu)秀學(xué)生工作者、教學(xué)創(chuàng)新創(chuàng)意大賽銀獎(jiǎng)、優(yōu)秀共產(chǎn)黨員等多項(xiàng)榮譽(yù)稱號(hào)。
王洪海,沈陽職業(yè)技術(shù)學(xué)院,教研室主任,碩士,副教授,沈陽市人才,從事職業(yè)教育計(jì)算機(jī)專業(yè)教學(xué)16年,主要研究領(lǐng)域軟件開發(fā)、測(cè)試、web前端開發(fā)等!
王緒峰 碩士研究生,山東勞動(dòng)職業(yè)技術(shù)學(xué)院副教授,省級(jí)教學(xué)團(tuán)隊(duì)和省級(jí)名師工作室骨干成員,山東省教育科學(xué)研究院教研員。從事軟件技術(shù)開發(fā)相關(guān)課程的理論與實(shí)踐教學(xué)工作,參與教科研課題6項(xiàng)、出版教材3部。指導(dǎo)學(xué)生參加省職業(yè)院校技能大賽獲一等獎(jiǎng)4次,榮獲“優(yōu)秀指導(dǎo)教師”稱號(hào),省級(jí)“優(yōu)秀指導(dǎo)教師”稱號(hào)。
目錄
第 1章
Node.js認(rèn)知 1
1.1 Node.js簡(jiǎn)介 1
1.1.1 什么是Node.js 1
1.1.2 Node.js發(fā)展歷史 1
1.1.3 Node.js特點(diǎn)及應(yīng)用場(chǎng)景 2
1.1.4 Node.js與JavaScript的區(qū)別 3
1.2 Node.js環(huán)境安裝 3
1.2.1 下載Node.js 3
1.2.2 安裝Node.js 4
1.2.3 安裝Node.js程序編輯環(huán)境 5
1.3 第 一個(gè)Node.js程序 7
1.3.1 編寫Node.js程序 7
1.3.2 運(yùn)行Node.js程序 8
1.4 Node.js控制臺(tái)Console 12
1.4.1 Console常用方法 12
1.4.2 項(xiàng)目實(shí)訓(xùn)——Console控制臺(tái)的使用 16
1.5 本章小結(jié) 20
1.6 本章習(xí)題 20
第 2章
模塊機(jī)制 21
2.1 什么是模塊 21
2.1.1 模塊的定義 21
2.1.2 模塊的優(yōu)點(diǎn) 21
2.1.3 模塊化規(guī)范 22
2.1.4 項(xiàng)目實(shí)訓(xùn)——模塊化輸出九九乘法表 27
2.2 Node.js模塊基礎(chǔ) 28
2.2.1 模塊的分類 28
2.2.2 自定義模塊 28
2.2.3 項(xiàng)目實(shí)訓(xùn)——模塊化實(shí)現(xiàn)四則混合運(yùn)算 30
2.3 包與NPM 31
2.3.1 包 31
2.3.2 NPM 33
2.3.3 自定義項(xiàng)目包 35
2.3.4 CNPM和YARN安裝與使用 37
2.3.5 項(xiàng)目實(shí)訓(xùn)——模塊化顯示日期 39
2.4 本章小結(jié) 39
2.5 本章習(xí)題 40
第3章
Node.js異步編程 41
3.1 回調(diào)函數(shù) 41
3.1.1 阻塞 42
3.1.2 非阻塞 43
3.2 異步編程 45
3.2.1 事件發(fā)布/訂閱模式 45
3.2.2 Promise/Deferred模式 46
3.2.3 流程控制庫 51
3.2.4 項(xiàng)目實(shí)訓(xùn)——顯示天氣預(yù)報(bào)數(shù)據(jù) 52
3.3 本章小結(jié) 55
3.4 本章習(xí)題 55
第4章
Buffer緩存區(qū)和文件系統(tǒng) 56
4.1 Buffer緩存區(qū) 56
4.1.1 Buffer簡(jiǎn)介 56
4.1.2 常用的Buffer類API 58
4.1.3 Buffer與字符編碼 60
4.1.4 項(xiàng)目實(shí)訓(xùn)——Buffer緩存區(qū)操作 61
4.2 fs文件基本操作 64
4.2.1 fs簡(jiǎn)介 64
4.2.2 打開/關(guān)閉文件 65
4.2.3 讀取/寫入文件 68
4.2.4 刪除文件 70
4.2.5 讀取目錄 71
4.2.6 項(xiàng)目實(shí)訓(xùn)——JSON文件數(shù)據(jù)操作 71
4.3 流 75
4.3.1 fs流簡(jiǎn)介 75
4.3.2 創(chuàng)建流 77
4.3.3 管道流 79
4.3.4 鏈?zhǔn)搅鳌?0
4.3.5 項(xiàng)目實(shí)訓(xùn)——XML文件轉(zhuǎn)JSON文件 81
4.4 本章小結(jié) 83
4.5 本章習(xí)題 83
第5章
構(gòu)建Web應(yīng)用 85
5.1 HTTP 85
5.1.1 HTTP原理 85
5.1.2 請(qǐng)求報(bào)文 87
5.1.3 響應(yīng)報(bào)文 89
5.2 http模塊 92
5.2.1 http模塊介紹 92
5.2.2 HTTP服務(wù)端 93
5.2.3 HTTP客戶端 98
5.2.4 http.ServerRequest和http.request 100
5.2.5 項(xiàng)目實(shí)訓(xùn)——前后端交互顯示省份信息 100
5.3 path模塊和url模塊 104
5.3.1 path模塊 104
5.3.2 url模塊 107
5.3.3 項(xiàng)目實(shí)訓(xùn)——為前端提供數(shù)據(jù)接口 110
5.4 本章小結(jié) 115
5.5 本章習(xí)題 115
第6章
Express框架 116
6.1 Express簡(jiǎn)介與安裝 116
6.1.1 Express簡(jiǎn)介 116
6.1.2 Express安裝 116
6.1.3 項(xiàng)目實(shí)訓(xùn)——搭建框架項(xiàng)目 118
6.2 路由配置 121
6.2.1 路由介紹 121
6.2.2 App級(jí)別路由 121
6.2.3 Router級(jí)別路由 127
6.3 中間件使用 129
6.3.1 自定義中間件 130
6.3.2 第三方中間件 130
6.3.3 內(nèi)置中間件 133
6.3.4 錯(cuò)誤中間件 135
6.3.5 項(xiàng)目實(shí)訓(xùn)——中間件訪問靜態(tài)文件 136
6.4 請(qǐng)求與響應(yīng) 139
6.4.1 請(qǐng)求對(duì)象 139
6.4.2 響應(yīng)對(duì)象 144
6.5 cookie 148
6.5.1 cookie工作原理 148
6.5.2 cookie的設(shè)置與獲取 149
6.5.3 項(xiàng)目實(shí)訓(xùn)——Cookie驗(yàn)證登錄 151
6.6 session 157
6.6.1 session工作原理 157
6.6.2 session的安裝配置與設(shè)置獲取 158
6.7 Postman接口測(cè)試 160
6.7.1 軟件安裝 160
6.7.2 接口測(cè)試與導(dǎo)出接口集 163
6.8 本章小結(jié) 165
6.9 本章習(xí)題 165
第7章
Express模板引擎 167
7.1 pug模板引擎 167
7.1.1 pug模板簡(jiǎn)介 167
7.1.2 pug模板文件的編譯 168
7.1.3 pug語法 169
7.2 ejs模板引擎 194
7.2.1 ejs標(biāo)簽含義 194
7.2.2 ejs中的include 194
7.3 Express框架中集成模板引擎 195
7.3.1 pug模板在Express框架中的集成 196
7.3.2 ejs模板在Express框架中的集成 198
7.3.3 項(xiàng)目實(shí)訓(xùn)——渲染商品信息 201
7.4 本章小結(jié) 208
7.5 本章習(xí)題 208
第8章
數(shù)據(jù)庫應(yīng)用開發(fā) 209
8.1 連接MySQL數(shù)據(jù)庫 209
8.1.1 安裝MySQL 209
8.1.2 MySQL常用語句 218
8.1.3 連接MySQL數(shù)據(jù)庫 221
8.1.4 數(shù)據(jù)庫操作 222
8.1.5 項(xiàng)目實(shí)訓(xùn)——學(xué)生信息管理 224
8.2 連接MongoDB數(shù)據(jù)庫 228
8.2.1 MongoDB安裝與配置 228
8.2.2 MongoDB基本操作 235
8.2.3 Mongoose數(shù)據(jù)庫操作 236
8.2.4 項(xiàng)目實(shí)訓(xùn)——商品信息管理 238
8.3 綜合項(xiàng)目實(shí)訓(xùn)——學(xué)生信息頁面管理 243
8.4 本章小結(jié) 253
8.5 本章習(xí)題 253
第9章
Koa框架 255
9.1 Koa框架簡(jiǎn)介 255
9.1.1 Koa與Express的區(qū)別 255
9.1.2 Koa 1和Koa 2 257
9.1.3 安裝NVM控制Node.js版本 260
9.2 應(yīng)用程序和上下文 262
9.2.1 語法糖 262
9.2.2 HTTP服務(wù) 263
9.2.3 上下文(Context) 263
9.3 Koa路由 265
9.4 靜態(tài)資源訪問 268
9.5 綜合項(xiàng)目實(shí)訓(xùn)——商品信息顯示 271
9.6 本章小結(jié) 278
9.7 本章習(xí)題 278
第 10章
項(xiàng)目?jī)?yōu)化及線上部署 280
10.1 性能優(yōu)化 280
10.1.1 使用CDN 280
10.1.2 減少HTTP請(qǐng)求數(shù) 280
10.1.3 優(yōu)化圖片 281
10.1.4 將外部腳本置底 282
10.1.5 使用Webpack壓縮打包 282
10.2 服務(wù)器部署和發(fā)布 285
10.2.1 購買服務(wù)器 285
10.2.2 購買域名 286
10.2.3 安裝系統(tǒng) 286
10.2.4 設(shè)置項(xiàng)目環(huán)境 287
10.3 本章習(xí)題 291
附錄
JavaScript知識(shí)點(diǎn)摘要 292