本書主要介紹了Node.js在Web全棧開發(fā)領域的應用實踐,分別從Node.js基礎語法、模塊化、服務器搭建、Express框架等方面由淺入深地進行講解。在企業(yè)級應用開發(fā)方面也有著重講解,例如MongoDB數(shù)據(jù)庫的操作、Ajax異步請求與同源策略、Node.js會話跟蹤技術的應用、Node.js爬蟲程序的實現(xiàn)等。 在企業(yè)開發(fā)中,Node.js的應用越來越廣泛。像Yahoo、Microsoft等公司的很多應用都已經(jīng)遷移到Node.js了,國內的阿里巴巴、網(wǎng)易、騰訊、新浪、百度等公司的很多線上產品也紛紛改用Node.js開發(fā),并取得了很好的效果。 本書從基礎入門到項目實戰(zhàn),為讀者逐步揭開Node.js的神秘面紗,幫助讀者更好地理解、學習Node.js,并能夠使用Node.js開發(fā)出優(yōu)秀的Web應用。無論讀者是一個前端開發(fā)的新手,還是一個編程高手,這本書都值得去認真閱讀。
如今,科學技術與信息技術快速發(fā)展和社會生產力變革對IT行業(yè)從業(yè)者提出了新的需求,從業(yè)者不僅要具備專業(yè)技術能力,更要具備業(yè)務實踐能力和健全的職業(yè)素質,復合型技術技能人才更受企業(yè)青睞。高校畢業(yè)生求職面臨的道門檻就是技能與經(jīng)驗,教科書也應緊隨新一代信息技術和新職業(yè)要求的變化及時更新。
本書倡導快樂學習、實戰(zhàn)就業(yè),在語言描述上力求準確、通俗易懂。本書針對重要知識點精心挑選案例,將理論與技能深度融合,促進隱性知識與顯性知識的轉化。案例講解包含設計思路、運行效果、實現(xiàn)思路、代碼實現(xiàn)、技能技巧詳解等。本書引入企業(yè)項目案例,從動手實踐的角度,幫助讀者逐步掌握前沿技術,為高質量就業(yè)賦能。
在章節(jié)編排上循序漸進,在語法闡述中盡量避免使用生硬的術語和枯燥的公式,從項目開發(fā)的實際需求入手,將理論知識與實際應用相結合,促進學習和成長,快速積累項目開發(fā)經(jīng)驗,從而在職場中擁有較高起點。
本書特點
本書主要講解Node.js在Web全棧開發(fā)領域的應用實踐方法,分別從Node.js基礎語法、模塊化、服務器搭建、Express框架等方面由淺入深地進行講解。在企業(yè)級應用開發(fā)方面也有著重地講解,例如MongoDB數(shù)據(jù)庫的操作、Ajax異步請求與同源策略、Node.js會話跟蹤技術的應用、Node.js爬蟲程序的實現(xiàn)等。
閱讀本書您將學習到以下內容。
第1章: Node.js簡介、運行環(huán)境搭建,以及NPM依賴管理工具。
第2章: 用Node.js快速上手編寫個程序,模塊化開發(fā)。
第3章: 掌握異步I/O的概念,了解Node.js的異步I/O中的事件循環(huán)、觀察者模式、請求對象、執(zhí)行回調,以及非I/O的異步API。
第4章: 了解Node.js中處理流數(shù)據(jù)的抽象接口,操作文件的方法。
第5章: 掌握Node.js Web服務器開發(fā)的基本方法。
第6章: 了解Express框架的安裝與配置方法,中間件和MVC。
第7章: 了解網(wǎng)站中的靜態(tài)資源并學習搭建靜態(tài)資源服務器。
第8章: 了解Handlebars模板引擎及其使用方法。
第9章: 了解MongoDB數(shù)據(jù)庫的基本概念、環(huán)境搭建方法及mongoose模塊。
第10章: 掌握Ajax的工作原理、實現(xiàn)步驟,以及瀏覽器同源策略。
第11章: 了解會話跟蹤的概念并嘗試跟蹤Express中的會話。
第12章: 通過Node.js實現(xiàn)網(wǎng)絡爬蟲。
第13章: 構建TCP服務、UDP服務、HTTP服務、WebSocket服務。
第14章: 綜合本書知識進行項目實戰(zhàn)Express開發(fā)投票管理系統(tǒng)。
通過學習本書,讀者可以較為系統(tǒng)地掌握Node.js在Web全棧開發(fā)的主要知識、操作方法并進行實踐。本書從基礎入門到項目實戰(zhàn),逐步揭開Node.js的神秘面紗,使讀者更好地理解和學習Node.js,并能夠使用Node.js開發(fā)出優(yōu)秀的Web應用。
致謝
本書的編寫和整理工作由北京千鋒互聯(lián)科技有限公司高教產品部完成,其中主要的參與人員有呂春林、徐子惠、潘亞等。除此之外,千鋒教育的500多名學員參與了教材的試讀工作,他們站在初學者的角度對教材提出了許多寶貴的修改意見,在此一并表示衷心的感謝。
意見反饋
在本書的編寫過程中,作者雖然力求完美,但難免有一些疏漏與不足之處,歡迎各界專家和讀者朋友們提出寶貴意見,聯(lián)系方式: textbook@1000phone.com。
第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í)行回調
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事件驅動編程
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調用回調函數(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)站前臺布局