第1章初識(shí)Node.js
1.1Node.js簡介
1.1.1Node.js的發(fā)展歷程
1.1.2Node.js的特點(diǎn)
1.1.3為什么要使用Node.js
1.2Node.js運(yùn)行環(huán)境安裝
1.2.1在Windows上安裝Node
1.2.2在Linux上安裝Node
1.2.3在macOS上安裝Node
1.3NPM依賴管理工具
1.3.1NPM簡介
1.3.2NPM的使用
第2章Node.js編程基礎(chǔ)
2.1Node.js快速入門
2.1.1Node.js基礎(chǔ)
2.1.2創(chuàng)建個(gè)Node應(yīng)用
2.2模塊化開發(fā)
2.2.1模塊化的概念
2.2.2CommonJS規(guī)范
2.2.3Node.js中的模塊化
2.2.4Node.js系統(tǒng)模塊
2.2.5第三方模塊
第3章異步I/O
3.1什么是異步I/O
3.1.1為什么要使用異步I/O
3.1.2異步I/O與非阻塞I/O
3.2Node.js的異步I/O
3.2.1事件循環(huán)
3.2.2觀察者模式
3.2.3請(qǐng)求對(duì)象
3.2.4執(zhí)行回調(diào)
3.3非I/O的異步API
3.3.1定時(shí)器
3.3.2process.nextTick()函數(shù)
第4章Stream
4.1Stream的概念
4.1.1Stream簡介
4.1.2Stream實(shí)現(xiàn)的過程
4.1.3Stream應(yīng)用場景
4.2使用Stream操作文件
4.2.1Node.js讀寫文件
4.2.2使用Stream讀寫文件
4.2.3Stream對(duì)性能的影響
4.3readline逐行讀取
4.4Buffer二進(jìn)制流
4.4.1什么是二進(jìn)制流
4.4.2使用Buffer提升性能
第5章Node.js Web服務(wù)器開發(fā)
5.1使用Node.js搭建Web服務(wù)器
5.1.1http模塊
5.1.2事件驅(qū)動(dòng)編程
5.1.3路由
5.1.4靜態(tài)資源服務(wù)
5.2請(qǐng)求與響應(yīng)對(duì)象
5.2.1URL的組成部分
5.2.2HTTP請(qǐng)求方法
5.2.3請(qǐng)求報(bào)頭
5.2.4響應(yīng)報(bào)頭
5.2.5請(qǐng)求體
5.2.6參數(shù)
5.2.7請(qǐng)求對(duì)象
5.2.8響應(yīng)對(duì)象
第6章Express框架
6.1Express框架簡介
6.2Express框架安裝與配置
6.2.1安裝Express
6.2.2Express目錄結(jié)構(gòu)
6.2.3Express的路由管理
6.2.4Express的視圖管理
6.3Express中間件
6.3.1中間件的概念
6.3.2Express中間件的使用
6.3.3自定義Express中間件
6.3.4常用的中間件
6.4Express中的MVC
6.4.1MVC概述
6.4.2模型
6.4.3視圖模型
6.4.4控制器
第7章靜態(tài)資源
7.1網(wǎng)站中的靜態(tài)資源
7.1.1什么是靜態(tài)資源
7.1.2靜態(tài)資源對(duì)性能的影響
7.2Web應(yīng)用中的靜態(tài)資源
7.2.1靜態(tài)映射
7.2.2視圖中的靜態(tài)資源
7.2.3CSS中的靜態(tài)資源
7.3搭建靜態(tài)資源服務(wù)器
7.3.1什么是靜態(tài)資源服務(wù)器
7.3.2使用Node搭建靜態(tài)資源服務(wù)器
第8章Handlebars
8.1模板引擎簡介
8.1.1什么是模板引擎
8.1.2傳統(tǒng)JavaScript模板
8.1.3如何選擇模板引擎
8.2Handlebars模板引擎
8.2.1Handlebars簡介
8.2.2Handlebars的安裝
8.2.3Handlebars的特性
8.3Handlebars的使用
8.3.1注釋
8.3.2塊級(jí)表達(dá)式
8.3.3服務(wù)器端模板
8.3.4視圖和布局
8.3.5在Express中使用布局
8.3.6客戶端Handlebars
第9章MongoDB數(shù)據(jù)庫
9.1MongoDB數(shù)據(jù)庫簡介
9.1.1什么是數(shù)據(jù)庫
9.1.2數(shù)據(jù)庫的優(yōu)點(diǎn)
9.1.3MongoDB數(shù)據(jù)庫重要概念
9.2MongoDB數(shù)據(jù)庫環(huán)境搭建
9.2.1MongoDB數(shù)據(jù)庫的下載與安裝
9.2.2MongoDB Compass可視化工具
9.2.3啟動(dòng)MongoDB服務(wù)
9.3mongoose模塊
9.3.1mongoose模塊簡介
9.3.2Schema模式對(duì)象
9.3.3Model模型對(duì)象
9.3.4Document文檔對(duì)象
9.4MongoDB模塊
9.4.1連接數(shù)據(jù)庫
9.4.2創(chuàng)建集合
9.4.3數(shù)據(jù)庫操作
第10章Ajax異步請(qǐng)求
10.1Ajax基礎(chǔ)
10.1.1傳統(tǒng)網(wǎng)站中存在的問題
10.1.2Ajax概述
10.1.3Ajax的使用場景
10.1.4Ajax的優(yōu)點(diǎn)
10.1.5Ajax的缺點(diǎn)
10.2Ajax的工作原理
10.2.1Ajax運(yùn)行原理
10.2.2XMLHttpRequest對(duì)象
10.2.3XMLHttpRequest對(duì)象的常用方法
10.3Ajax的實(shí)現(xiàn)步驟
10.3.1創(chuàng)建XMLHttpRequest對(duì)象
10.3.2設(shè)置請(qǐng)求方式
10.3.3調(diào)用回調(diào)函數(shù)
10.3.4發(fā)送HTTP請(qǐng)求
10.3.5Ajax的緩存問題
10.4瀏覽器同源策略
10.4.1什么是同源策略
10.4.2同源策略的限制
10.4.3同源策略的解決方案
10.5RESTful風(fēng)格API
10.5.1RESTful API 概述
10.5.2為什么要使用RESTful結(jié)構(gòu)
10.5.3RESTful API的實(shí)現(xiàn)
第11章會(huì)話跟蹤
11.1會(huì)話跟蹤概述
11.1.1HTTP請(qǐng)求的特點(diǎn)
11.1.2什么是會(huì)話跟蹤
11.1.3會(huì)話跟蹤的用途
11.2Express中的會(huì)話跟蹤
11.2.1Express中的Cookie
11.2.2Express中的Session
第12章Node.js實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲
12.1網(wǎng)絡(luò)爬蟲概述
12.1.1什么是網(wǎng)絡(luò)爬蟲
12.1.2網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)原理
12.1.3Node.js實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲的優(yōu)勢
12.2基于Node實(shí)現(xiàn)的爬蟲程序
12.2.1安裝依賴包
12.2.2實(shí)現(xiàn)抓取數(shù)據(jù)
12.2.3實(shí)現(xiàn)爬蟲的方法
第13章網(wǎng)絡(luò)編程
13.1Node構(gòu)建TCP服務(wù)
13.1.1TCP
13.1.2構(gòu)建TCP服務(wù)器
13.2Node構(gòu)建UDP服務(wù)
13.2.1UDP協(xié)議
13.2.2創(chuàng)建UDP套接字
13.2.3創(chuàng)建UDP服務(wù)器和客戶端
13.3Node構(gòu)建HTTP服務(wù)
13.3.1初識(shí)HTTP協(xié)議
13.3.2Node中的http模塊
13.4Node構(gòu)建WebSocket服務(wù)
13.4.1什么是WebSocket
13.4.2WebSocket實(shí)例的屬性與方法
13.4.3構(gòu)建WebSocket服務(wù)
第14章項(xiàng)目實(shí)戰(zhàn): Express開發(fā)投票管理系統(tǒng)
14.1項(xiàng)目概述
14.1.1開發(fā)環(huán)境
14.1.2項(xiàng)目結(jié)構(gòu)
14.2數(shù)據(jù)庫設(shè)計(jì)
14.2.1連接數(shù)據(jù)庫
14.2.2創(chuàng)建Schema文檔對(duì)象
14.2.3封裝CRUD函數(shù)
14.2.4封裝文件上傳業(yè)務(wù)邏輯
14.3配置前端開發(fā)環(huán)境
14.3.1靜態(tài)文件管理
14.3.2安裝依賴
14.4后臺(tái)功能模塊開發(fā)
14.4.1系統(tǒng)用戶登錄
14.4.2系統(tǒng)用戶管理
14.4.3候選對(duì)象管理
14.4.4投票主題管理
14.4.5投票環(huán)節(jié)管理
14.4.6投票統(tǒng)計(jì)管理
14.5網(wǎng)站前臺(tái)布局