第1章初識Node.js
1.1Node.js簡介
1.1.1Node.js的發(fā)展歷程
1.1.2Node.js的特點
1.1.3為什么要使用Node.js
1.2Node.js運行環(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編程基礎
2.1Node.js快速入門
2.1.1Node.js基礎
2.1.2創(chuàng)建個Node應用
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應用場景
4.2使用Stream操作文件
4.2.1Node.js讀寫文件
4.2.2使用Stream讀寫文件
4.2.3Stream對性能的影響
4.3readline逐行讀取
4.4Buffer二進制流
4.4.1什么是二進制流
4.4.2使用Buffer提升性能
第5章Node.js Web服務器開發(fā)
5.1使用Node.js搭建Web服務器
5.1.1http模塊
5.1.2事件驅(qū)動編程
5.1.3路由
5.1.4靜態(tài)資源服務
5.2請求與響應對象
5.2.1URL的組成部分
5.2.2HTTP請求方法
5.2.3請求報頭
5.2.4響應報頭
5.2.5請求體
5.2.6參數(shù)
5.2.7請求對象
5.2.8響應對象
第6章Express框架
6.1Express框架簡介
6.2Express框架安裝與配置
6.2.1安裝Express
6.2.2Express目錄結構
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應用中的靜態(tài)資源
7.2.1靜態(tài)映射
7.2.2視圖中的靜態(tài)資源
7.2.3CSS中的靜態(tài)資源
7.3搭建靜態(tài)資源服務器
7.3.1什么是靜態(tài)資源服務器
7.3.2使用Node搭建靜態(tài)資源服務器
第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塊級表達式
8.3.3服務器端模板
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服務
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基礎
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運行原理
10.2.2XMLHttpRequest對象
10.2.3XMLHttpRequest對象的常用方法
10.3Ajax的實現(xiàn)步驟
10.3.1創(chuàng)建XMLHttpRequest對象
10.3.2設置請求方式
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風格API
10.5.1RESTful API 概述
10.5.2為什么要使用RESTful結構
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)絡爬蟲
12.1網(wǎng)絡爬蟲概述
12.1.1什么是網(wǎng)絡爬蟲
12.1.2網(wǎng)絡爬蟲的實現(xiàn)原理
12.1.3Node.js實現(xiàn)網(wǎng)絡爬蟲的優(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)絡編程
13.1Node構建TCP服務
13.1.1TCP
13.1.2構建TCP服務器
13.2Node構建UDP服務
13.2.1UDP協(xié)議
13.2.2創(chuàng)建UDP套接字
13.2.3創(chuàng)建UDP服務器和客戶端
13.3Node構建HTTP服務
13.3.1初識HTTP協(xié)議
13.3.2Node中的http模塊
13.4Node構建WebSocket服務
13.4.1什么是WebSocket
13.4.2WebSocket實例的屬性與方法
13.4.3構建WebSocket服務
第14章項目實戰(zhàn): Express開發(fā)投票管理系統(tǒng)
14.1項目概述
14.1.1開發(fā)環(huán)境
14.1.2項目結構
14.2數(shù)據(jù)庫設計
14.2.1連接數(shù)據(jù)庫
14.2.2創(chuàng)建Schema文檔對象
14.2.3封裝CRUD函數(shù)
14.2.4封裝文件上傳業(yè)務邏輯
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)站前臺布局