第1章初識Node.js
1.1Node.js簡介
1.1.1Node.js的發(fā)展歷程
1.1.2Node.js的特點
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)建個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請求對象
3.2.4執(zhí)行回調(diào)
3.3非I/O的異步API
3.3.1定時器
3.3.2process.nextTick()函數(shù)
第4章Stream
4.1Stream的概念
4.1.1Stream簡介
4.1.2Stream實現(xiàn)的過程
4.1.3Stream應(yīng)用場景
4.2使用Stream操作文件
4.2.1Node.js讀寫文件
4.2.2使用Stream讀寫文件
4.2.3Stream對性能的影響
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ū)動編程
5.1.3路由
5.1.4靜態(tài)資源服務(wù)
5.2請求與響應(yīng)對象
5.2.1URL的組成部分
5.2.2HTTP請求方法
5.2.3請求報頭
5.2.4響應(yīng)報頭
5.2.5請求體
5.2.6參數(shù)
5.2.7請求對象
5.2.8響應(yīng)對象
第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)資源對性能的影響
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塊級表達(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)點
9.1.3MongoDB數(shù)據(jù)庫重要概念
9.2MongoDB數(shù)據(jù)庫環(huán)境搭建
9.2.1MongoDB數(shù)據(jù)庫的下載與安裝
9.2.2MongoDB Compass可視化工具
9.2.3啟動MongoDB服務(wù)
9.3mongoose模塊
9.3.1mongoose模塊簡介
9.3.2Schema模式對象
9.3.3Model模型對象
9.3.4Document文檔對象
9.4MongoDB模塊
9.4.1連接數(shù)據(jù)庫
9.4.2創(chuàng)建集合
9.4.3數(shù)據(jù)庫操作
第10章Ajax異步請求
10.1Ajax基礎(chǔ)
10.1.1傳統(tǒng)網(wǎng)站中存在的問題
10.1.2Ajax概述
10.1.3Ajax的使用場景
10.1.4Ajax的優(yōu)點
10.1.5Ajax的缺點
10.2Ajax的工作原理
10.2.1Ajax運(yùn)行原理
10.2.2XMLHttpRequest對象
10.2.3XMLHttpRequest對象的常用方法
10.3Ajax的實現(xiàn)步驟
10.3.1創(chuàng)建XMLHttpRequest對象
10.3.2設(shè)置請求方式
10.3.3調(diào)用回調(diào)函數(shù)
10.3.4發(fā)送HTTP請求
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的實現(xiàn)
第11章會話跟蹤
11.1會話跟蹤概述
11.1.1HTTP請求的特點
11.1.2什么是會話跟蹤
11.1.3會話跟蹤的用途
11.2Express中的會話跟蹤
11.2.1Express中的Cookie
11.2.2Express中的Session
第12章Node.js實現(xiàn)網(wǎng)絡(luò)爬蟲
12.1網(wǎng)絡(luò)爬蟲概述
12.1.1什么是網(wǎng)絡(luò)爬蟲
12.1.2網(wǎng)絡(luò)爬蟲的實現(xiàn)原理
12.1.3Node.js實現(xiàn)網(wǎng)絡(luò)爬蟲的優(yōu)勢
12.2基于Node實現(xiàn)的爬蟲程序
12.2.1安裝依賴包
12.2.2實現(xiàn)抓取數(shù)據(jù)
12.2.3實現(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初識HTTP協(xié)議
13.3.2Node中的http模塊
13.4Node構(gòu)建WebSocket服務(wù)
13.4.1什么是WebSocket
13.4.2WebSocket實例的屬性與方法
13.4.3構(gòu)建WebSocket服務(wù)
第14章項目實戰(zhàn): Express開發(fā)投票管理系統(tǒng)
14.1項目概述
14.1.1開發(fā)環(huán)境
14.1.2項目結(jié)構(gòu)
14.2數(shù)據(jù)庫設(shè)計
14.2.1連接數(shù)據(jù)庫
14.2.2創(chuàng)建Schema文檔對象
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后臺功能模塊開發(fā)
14.4.1系統(tǒng)用戶登錄
14.4.2系統(tǒng)用戶管理
14.4.3候選對象管理
14.4.4投票主題管理
14.4.5投票環(huán)節(jié)管理
14.4.6投票統(tǒng)計管理
14.5網(wǎng)站前臺布局