Node.js是一個基于Chrome V8引擎的JavaScript運行環(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ù),并通過案例介紹了基于Express和Koa框架的項目開發(fā)。本書著重實際應(yīng)用,案例及實訓(xùn)項目的實用性和可操作性強(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框架、項目優(yōu)化及線上部署等Web應(yīng)用開發(fā)中為重要的內(nèi)容。
本書可作為本科和高職院校計算機(jī)相關(guān)專業(yè)的教材,也可作為計算機(jī)培訓(xùn)用教材,還可作為計算機(jī)相關(guān)技術(shù)愛好者的自學(xué)參考書。
1.內(nèi)容細(xì)致,組織合理
本書由淺入深介紹了Node.js的基礎(chǔ)知識及核心技術(shù),并結(jié)合當(dāng)下軟件技術(shù)專業(yè)學(xué)生的特點,以碎片化知識點為單元,通過理論與實踐相結(jié)合的方式,幫助讀者在學(xué)習(xí)Node.js知識的同時進(jìn)行項目實踐。
2.結(jié)合實際,突出實踐
本書包含了大量企業(yè)工程師精心設(shè)計的示例和項目實訓(xùn),體現(xiàn)了“教、學(xué)、做”一體化思想,方便讀者快速上手,培養(yǎng)讀者的實際操作能力。示例和項目實踐有詳細(xì)的代碼說明和步驟。
3.資源豐富,立體教學(xué)
本書配備了豐富的立體化教學(xué)資源,包括教師專項教學(xué)PPT、源代碼、習(xí)題答案以及各章節(jié)的在線教學(xué)視頻,可按書中指示獲取。附錄中整理了JavaScript語言知識點摘要,方便讀者查閱學(xué)習(xí)。
唐小燕,碩士研究生,副教授/工程師,承擔(dān)過專業(yè)方向負(fù)責(zé)人、二級督導(dǎo)組長等工作。參加2020年江蘇省職業(yè)院校信息化大賽團(tuán)隊獲一等獎、江蘇省高校微課教學(xué)比賽獲二等獎;2019年江蘇省職業(yè)院校信息化大賽團(tuán)隊獲二等獎。近五年來,教學(xué)質(zhì)量考核均為“優(yōu)秀”,兩次榮獲學(xué)院優(yōu)秀學(xué)生工作者、教學(xué)創(chuàng)新創(chuàng)意大賽銅獎。主持2門院級在線開放課程建設(shè),參與多門省級級精品在線開放課建設(shè)。曾獲學(xué)校金講臺教師、巾幗標(biāo)兵、師德標(biāo)兵、優(yōu)秀督導(dǎo)、優(yōu)秀共產(chǎn)黨員等多項榮譽(yù)稱號。
劉洪武,碩士研究生,教授,畢業(yè)于中國人民解放軍國防科技大學(xué)。主持省級軟件技術(shù)教學(xué)資源庫1個,主持院級人工智能教學(xué)資源庫1個;參與多門省級在線開放課程建設(shè)。2019年獲得職業(yè)院校教學(xué)能力大賽國賽二等獎;2021年獲得河北省教學(xué)成果獎特等獎;近年指導(dǎo)學(xué)生獲得職業(yè)技能大賽獲得國賽二等獎2項。
虞菊花,碩士研究生,講師。出版國規(guī)教材1本,參與多本教材的編寫。主持1門1門省級在線開放課程建設(shè),參與多門省級、校級在線開放課程的建設(shè)。參加2020年江蘇省職業(yè)院校信息化大賽團(tuán)隊獲二等獎;2017年江蘇省高校微課教學(xué)比賽獲一等獎,連續(xù)兩年指導(dǎo)學(xué)生參加江蘇省高等職業(yè)院校技能大賽獲一等獎。曾獲學(xué)校優(yōu)秀學(xué)生工作者、教學(xué)創(chuàng)新創(chuàng)意大賽銀獎、優(yōu)秀共產(chǎn)黨員等多項榮譽(yù)稱號。
王洪海,沈陽職業(yè)技術(shù)學(xué)院,教研室主任,碩士,副教授,沈陽市人才,從事職業(yè)教育計算機(jī)專業(yè)教學(xué)16年,主要研究領(lǐng)域軟件開發(fā)、測試、web前端開發(fā)等!
王緒峰 碩士研究生,山東勞動職業(yè)技術(shù)學(xué)院副教授,省級教學(xué)團(tuán)隊和省級名師工作室骨干成員,山東省教育科學(xué)研究院教研員。從事軟件技術(shù)開發(fā)相關(guān)課程的理論與實踐教學(xué)工作,參與教科研課題6項、出版教材3部。指導(dǎo)學(xué)生參加省職業(yè)院校技能大賽獲一等獎4次,榮獲“優(yōu)秀指導(dǎo)教師”稱號,省級“優(yōu)秀指導(dǎo)教師”稱號。
目錄
第 1章
Node.js認(rèn)知 1
1.1 Node.js簡介 1
1.1.1 什么是Node.js 1
1.1.2 Node.js發(fā)展歷史 1
1.1.3 Node.js特點及應(yī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 第 一個Node.js程序 7
1.3.1 編寫Node.js程序 7
1.3.2 運行Node.js程序 8
1.4 Node.js控制臺Console 12
1.4.1 Console常用方法 12
1.4.2 項目實訓(xùn)——Console控制臺的使用 16
1.5 本章小結(jié) 20
1.6 本章習(xí)題 20
第 2章
模塊機(jī)制 21
2.1 什么是模塊 21
2.1.1 模塊的定義 21
2.1.2 模塊的優(yōu)點 21
2.1.3 模塊化規(guī)范 22
2.1.4 項目實訓(xùn)——模塊化輸出九九乘法表 27
2.2 Node.js模塊基礎(chǔ) 28
2.2.1 模塊的分類 28
2.2.2 自定義模塊 28
2.2.3 項目實訓(xùn)——模塊化實現(xiàn)四則混合運算 30
2.3 包與NPM 31
2.3.1 包 31
2.3.2 NPM 33
2.3.3 自定義項目包 35
2.3.4 CNPM和YARN安裝與使用 37
2.3.5 項目實訓(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 項目實訓(xùn)——顯示天氣預(yù)報數(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簡介 56
4.1.2 常用的Buffer類API 58
4.1.3 Buffer與字符編碼 60
4.1.4 項目實訓(xùn)——Buffer緩存區(qū)操作 61
4.2 fs文件基本操作 64
4.2.1 fs簡介 64
4.2.2 打開/關(guān)閉文件 65
4.2.3 讀取/寫入文件 68
4.2.4 刪除文件 70
4.2.5 讀取目錄 71
4.2.6 項目實訓(xùn)——JSON文件數(shù)據(jù)操作 71
4.3 流 75
4.3.1 fs流簡介 75
4.3.2 創(chuàng)建流 77
4.3.3 管道流 79
4.3.4 鏈?zhǔn)搅鳌?0
4.3.5 項目實訓(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 請求報文 87
5.1.3 響應(yīng)報文 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 項目實訓(xùn)——前后端交互顯示省份信息 100
5.3 path模塊和url模塊 104
5.3.1 path模塊 104
5.3.2 url模塊 107
5.3.3 項目實訓(xùn)——為前端提供數(shù)據(jù)接口 110
5.4 本章小結(jié) 115
5.5 本章習(xí)題 115
第6章
Express框架 116
6.1 Express簡介與安裝 116
6.1.1 Express簡介 116
6.1.2 Express安裝 116
6.1.3 項目實訓(xùn)——搭建框架項目 118
6.2 路由配置 121
6.2.1 路由介紹 121
6.2.2 App級別路由 121
6.2.3 Router級別路由 127
6.3 中間件使用 129
6.3.1 自定義中間件 130
6.3.2 第三方中間件 130
6.3.3 內(nèi)置中間件 133
6.3.4 錯誤中間件 135
6.3.5 項目實訓(xùn)——中間件訪問靜態(tài)文件 136
6.4 請求與響應(yīng) 139
6.4.1 請求對象 139
6.4.2 響應(yīng)對象 144
6.5 cookie 148
6.5.1 cookie工作原理 148
6.5.2 cookie的設(shè)置與獲取 149
6.5.3 項目實訓(xùn)——Cookie驗證登錄 151
6.6 session 157
6.6.1 session工作原理 157
6.6.2 session的安裝配置與設(shè)置獲取 158
6.7 Postman接口測試 160
6.7.1 軟件安裝 160
6.7.2 接口測試與導(dǎo)出接口集 163
6.8 本章小結(jié) 165
6.9 本章習(xí)題 165
第7章
Express模板引擎 167
7.1 pug模板引擎 167
7.1.1 pug模板簡介 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 項目實訓(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 項目實訓(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 項目實訓(xùn)——商品信息管理 238
8.3 綜合項目實訓(xùn)——學(xué)生信息頁面管理 243
8.4 本章小結(jié) 253
8.5 本章習(xí)題 253
第9章
Koa框架 255
9.1 Koa框架簡介 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 綜合項目實訓(xùn)——商品信息顯示 271
9.6 本章小結(jié) 278
9.7 本章習(xí)題 278
第 10章
項目優(yōu)化及線上部署 280
10.1 性能優(yōu)化 280
10.1.1 使用CDN 280
10.1.2 減少HTTP請求數(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è)置項目環(huán)境 287
10.3 本章習(xí)題 291
附錄
JavaScript知識點摘要 292