很明顯,本書(shū)是給想要用JavaScript、Node 和Express 創(chuàng)建Web 應(yīng)用程序(傳統(tǒng)網(wǎng)站、REST API,或者介于兩者之間的任何東西)的程序員準(zhǔn)備的。Node 開(kāi)發(fā)令人興奮的一面是它已經(jīng)吸引了全新的程序員受眾。JavaScript 的可用性和靈活性吸引了來(lái)自世界各地的自學(xué)成才的程序員。在計(jì)算機(jī)科學(xué)的歷史中,編程還從沒(méi)有如此容易過(guò)。學(xué)習(xí)編程的在線資源的品質(zhì)和數(shù)量(以及遇到困難時(shí)獲取的幫助)真的令人驚訝和鼓舞人心。所以對(duì)于那些新(可能是自學(xué))的程序員,我表示歡迎。
當(dāng)然,還有像我這樣已經(jīng)做過(guò)一段時(shí)間編程的程序員。與同時(shí)代的很多程序員一樣,我也是從匯編和BASIC 開(kāi)始的,然后經(jīng)歷了Pascal、C++、Perl、Java、PHP、Ruby、C、C#和JavaScript。上大學(xué)時(shí),我接觸過(guò)更加小眾的語(yǔ)言,比如ML、LISP 和PROLOG。這些語(yǔ)言很多都接近我的理想選擇,但沒(méi)有一個(gè)像JavaScrip 這樣讓我覺(jué)得前景如此光明。所以這本書(shū)也是給像我這樣的程序員寫(xiě)的,他們經(jīng)驗(yàn)豐富,可能對(duì)特定技術(shù)的認(rèn)識(shí)更富哲理。
你不一定要有Node 方面的經(jīng)驗(yàn),但應(yīng)該有一些JavaScript 經(jīng)驗(yàn)。如果你是有經(jīng)驗(yàn)的程序員,推薦你看看Douglas Crockford 的JavaScript: The Good Parts(O’Reilly,http://book.douban.com/subject/2994925/)。本書(shū)中的例子可以在Node 支持的任何系統(tǒng)(包括Windows、OS X 和Linux)上使用。這些示例主要面向命令行(終端)用戶,所以你應(yīng)該熟悉你所使用的系統(tǒng)的終端。
最重要的是,本書(shū)是為那些躍躍欲試的程序員準(zhǔn)備的。他們對(duì)互聯(lián)網(wǎng)的未來(lái)感到興奮,并且想?yún)⑴c其中。他們對(duì)學(xué)新東西、新技術(shù)和Web 開(kāi)發(fā)的新方式感到興奮。親愛(ài)的讀者,如果你沒(méi)有興奮感,我希望你讀完本書(shū)時(shí)能有這種感覺(jué)。
序XIV
前言XV
第1章初識(shí)Express
1.1JavaScript革命
1.2初識(shí)Express
1.3Express簡(jiǎn)史
1.4升級(jí)到Express4.0
1.5Node:一種新型Web服務(wù)器
1.6Node的生態(tài)系統(tǒng)
1.7授權(quán)
第2章從Node開(kāi)始
2.1獲取Node
2.2使用終端
2.3編輯器
2.4npm
2.5用Node實(shí)現(xiàn)的簡(jiǎn)單Web服務(wù)器
2.5.1HelloWorld
2.5.2事件驅(qū)動(dòng)編程
2.5.3路由
2.5.4靜態(tài)資源服務(wù)
2.6走向Express
第3章省時(shí)省力的Express
3.1腳手架
3.2草地鷚旅行社網(wǎng)站
3.3初始步驟
3.3.1視圖和布局
3.3.2視圖和靜態(tài)文件
3.3.3視圖中的動(dòng)態(tài)內(nèi)容
3.4小結(jié)
第4章工欲善其事,必先利其器
4.1最佳實(shí)踐
4.2版本控制
4.3針對(duì)本書(shū)如何使用Git
4.3.1如果你要自己動(dòng)手
4.3.2如果你要使用官方存儲(chǔ)庫(kù)
4.4npm包
4.5項(xiàng)目元數(shù)據(jù)
4.6Node模塊
第5章質(zhì)量保證
5.1QA:值得嗎
5.2邏輯與展示
5.3測(cè)試的類(lèi)型
5.4QA技術(shù)概覽
5.5運(yùn)行你的服務(wù)器
5.6頁(yè)面測(cè)試
5.7跨頁(yè)測(cè)試
5.8邏輯測(cè)試
5.9去毛
5.10鏈接檢查
5.11用Grunt實(shí)現(xiàn)自動(dòng)化
5.12持續(xù)集成
第6章請(qǐng)求和響應(yīng)對(duì)象
6.1URL的組成部分
6.2HTTP請(qǐng)求方法
6.3請(qǐng)求報(bào)頭
6.4響應(yīng)報(bào)頭
6.5互聯(lián)網(wǎng)媒體類(lèi)型
6.6請(qǐng)求體
6.7參數(shù)
6.8請(qǐng)求對(duì)象
6.9響應(yīng)對(duì)象
6.10獲取更多信息
6.11小結(jié)
6.11.1內(nèi)容渲染
6.11.2處理表單
6.11.3提供一個(gè)API
第7章Handlebars模板引擎
7.1唯一一條絕對(duì)規(guī)則
7.2選擇模板引擎
7.3Jade:不走尋常路
7.4Handlebars基礎(chǔ)
7.4.1注釋
7.4.2塊級(jí)表達(dá)式
7.4.3服務(wù)器端模板
7.4.4視圖和布局
7.4.5在Express中使用(或不使用)布局
7.4.6局部文件
7.4.7段落
7.4.8完善你的模板
7.4.9客戶端Handlebars
7.5小結(jié)
第8章表單處理
8.1向服務(wù)器發(fā)送客戶端數(shù)據(jù)
8.2HTML表單
8.3編碼
8.4處理表單的不同方式
8.5Express表單處理
8.6處理AJAX表單
8.7文件上傳
8.8jQuery文件上傳
第9章Cookie與會(huì)話
9.1憑證的外化
9.2Express中的Cookie
9.3檢查Cookie
9.4會(huì)話
9.4.1內(nèi)存存儲(chǔ)
9.4.2使用會(huì)話
9.5用會(huì)話實(shí)現(xiàn)即顯消息
9.6會(huì)話的用途
第10章中間件
10.1常用中間件
10.2第三方中間件
第11章發(fā)送郵件
11.1SMTP、MSA和MTA
11.2接收郵件
11.3郵件頭
11.4郵件格式
11.5HTML郵件
11.6Nodemailer
11.6.1發(fā)送郵件
11.6.2將郵件發(fā)送給多個(gè)接收者
11.7發(fā)送批量郵件的更佳選擇
11.8發(fā)送HTML郵件
11.8.1HTML郵件中的圖片
11.8.2用視圖發(fā)送HTML郵件
11.8.3封裝郵件功能
11.9將郵件作為網(wǎng)站監(jiān)測(cè)工具
第12章與生產(chǎn)相關(guān)的問(wèn)題
12.1執(zhí)行環(huán)境
12.2環(huán)境特定配置
12.3擴(kuò)展你的網(wǎng)站
12.3.1用應(yīng)用集群擴(kuò)展
12.3.2處理未捕獲的異常
12.3.3用多臺(tái)服務(wù)器擴(kuò)展
12.4網(wǎng)站監(jiān)控
12.4.1第三方正常運(yùn)行監(jiān)控
12.4.2應(yīng)用程序故障
12.5壓力測(cè)試
第13章持久化
13.1文件系統(tǒng)持久化
13.2云持久化
13.3數(shù)據(jù)庫(kù)持久化
13.3.1關(guān)于性能
13.3.2設(shè)置MongoDB
13.3.3Mongoose
13.3.4使用Mongoose連接數(shù)據(jù)庫(kù)
13.3.5創(chuàng)建模式和模型
13.3.6添加初始數(shù)據(jù)
13.3.7獲取數(shù)據(jù)
13.3.8添加數(shù)據(jù)
13.3.9用MongoDB存儲(chǔ)會(huì)話數(shù)據(jù)
第14章路由
14.1路由和SEO
14.2子域名
14.3路由處理器是中間件
14.4路由路徑和正則表達(dá)式
14.5路由參數(shù)
14.6組織路由
14.7在模塊中聲明路由
14.8按邏輯對(duì)處理器分組
14.9自動(dòng)化渲染視圖
14.10其他的路由組織方式
第15章RESTAPI和JSON
15.1JSON和XML
15.2我們的API
15.3API錯(cuò)誤報(bào)告
15.4跨域資源共享
15.5我們的數(shù)據(jù)存儲(chǔ)
15.6我們的測(cè)試
15.7用Express提供API
15.8使用REST插件
15.9使用子域名
第16章靜態(tài)內(nèi)容
16.1性能方面的考慮
16.2面向未來(lái)的網(wǎng)站
16.2.1靜態(tài)映射
16.2.2視圖中的靜態(tài)資源
16.2.3CSS中的靜態(tài)資源
16.3服務(wù)器端JavaScript中的靜態(tài)資源
16.4客戶端JavaScript中的靜態(tài)資源
16.5提供靜態(tài)資源
16.6修改靜態(tài)內(nèi)容
16.7打包和縮小
16.8關(guān)于第三方庫(kù)
16.9QA
16.10小結(jié)
第17章在Express中實(shí)現(xiàn)MVC
17.1模型
17.2視圖模型
17.3控制器
17.4小結(jié)
第18章安全
18.1HTTPS
18.1.1生成自己的證書(shū)
18.1.2使用免費(fèi)的證書(shū)頒發(fā)機(jī)構(gòu)
18.1.3購(gòu)買(mǎi)證書(shū)
18.1.4對(duì)你的Express應(yīng)用啟用HTTPS
18.1.5關(guān)于端口的說(shuō)明
18.1.6HTTPS和代理
18.2跨站請(qǐng)求偽造
18.3認(rèn)證
18.3.1認(rèn)證與授權(quán)
18.3.2密碼的問(wèn)題
18.3.3第三方認(rèn)證
18.3.4把用戶存在數(shù)據(jù)庫(kù)中
18.3.5認(rèn)證與注冊(cè)和用戶體驗(yàn)
18.3.6Passport
18.3.7基于角色的授權(quán)
18.3.8添加更多認(rèn)證提供者
18.4小結(jié)
第19章集成第三方API
19.1社交媒體
19.1.1社交媒體插件和站點(diǎn)性能
19.1.2搜索推文
19.1.3渲染推文
19.2地理編碼
19.2.1用谷歌的地理編碼
19.2.2對(duì)你的數(shù)據(jù)做地理編碼
19.2.3顯示地圖
19.2.4提升客戶端性能
19.3天氣數(shù)據(jù)
19.4小結(jié)
第20章調(diào)試
20.1調(diào)試的首要原則
20.2利用好REPL和控制臺(tái)
20.3利用Node內(nèi)置的調(diào)試器
20.4Node探查器
20.5調(diào)試異步函數(shù)
20.6調(diào)試Express
第21章正式啟用
21.1域名注冊(cè)和托管服務(wù)
21.1.1域名系統(tǒng)
21.1.2安全
21.1.3頂級(jí)域名
21.1.4子域名
21.1.5域名服務(wù)器
21.1.6托管
21.1.7部署
21.2小結(jié)
第22章維護(hù)
22.1維護(hù)的原則
22.1.1有長(zhǎng)遠(yuǎn)規(guī)劃
22.1.2使用源碼控制系統(tǒng)
22.1.3使用問(wèn)題追蹤系統(tǒng)
22.1.4良好的衛(wèi)生習(xí)慣
22.1.5不要拖延
22.1.6做常規(guī)的QA檢查
22.1.7監(jiān)測(cè)分析
22.1.8性能優(yōu)化
22.1.9潛在用戶追蹤優(yōu)先
22.1.10防止出現(xiàn)"不可見(jiàn)的"錯(cuò)誤
22.2代碼重用及重構(gòu)
22.2.1私有npm庫(kù)
22.2.2中間件
22.3小結(jié)
第23章其他資源
23.1在線文檔
23.2期刊
23.3StackOverflow
23.4為Express做貢獻(xiàn)
23.5小結(jié)
關(guān)于封面
關(guān)于作者