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