《圖靈程序設計叢書:Node與Express開發(fā)》系統(tǒng)講解了使用Express開發(fā)動態(tài)Web應用的流程和步驟。作者不僅講授了開發(fā)公共站點及REST API的基礎知識,同時還講解了構建單頁、多頁及混合Web應用的規(guī)劃方式及實踐。具體而言,第1~5章介紹Node 和Express,搭建一個示例網(wǎng)站的骨架,討論測試和QA。第6~12章介紹Node中更重要的結構,講解模板,介紹cookies、會話和表單處理 器,探討中間件以及從服務器發(fā)送電子郵件。第13~15章討論持久化、URL路由、API的編寫、流行的MVC范式。第18~22章討論安全、社交媒體集 成以及網(wǎng)站的調(diào)試、啟用和維護。
《圖靈程序設計叢書:Node與Express開發(fā)》適合所有前端和后端開發(fā)人員閱讀。
《圖靈程序設計叢書:Node與Express開發(fā)》涵蓋Express 4.0,系統(tǒng)地講解了利用Express(Node/JavaScript開發(fā)棧中的重要組件)開發(fā)動態(tài)Web應用的流程和步驟。作者Ethan Brown通過開發(fā)一個示例應用講授了開發(fā)公共網(wǎng)站和REST API的基礎知識。此外還介紹了設計與實現(xiàn)Web架構的實踐,幫你用Express構建單頁、多頁以及混合Web應用。
Express在根本沒有框架和有一個健壯的框架之間找到了平衡,讓你自由選擇架構。通過《圖靈程序設計叢書:Node與Express開發(fā)》,熟悉JavaScript的前端和后端工程師會發(fā)現(xiàn)一種新的Web開發(fā)視角。
通過閱讀《圖靈程序設計叢書:Node與Express開發(fā)》,你將能夠:
為渲染動態(tài)數(shù)據(jù)創(chuàng)建網(wǎng)頁模板系統(tǒng)
探究請求對象和響應對象、中間件及URL路由
模擬用于測試和開發(fā)的生產(chǎn)環(huán)境
實現(xiàn)文檔數(shù)據(jù)庫的持久化,特別是針對MongoDB
讓其他程序可以通過REST API訪問你的資源
用HTTPS、認證和授權開發(fā)安全的Web應用
集成社交媒體、地理位置服務和其他第三方服務
實現(xiàn)應用的啟動和維護計劃
學習重要的調(diào)試技能
很明顯,本書是給想要用JavaScript、Node 和Express 創(chuàng)建Web 應用程序(傳統(tǒng)網(wǎng)站、REST API,或者介于兩者之間的任何東西)的程序員準備的。Node 開發(fā)令人興奮的一面是它已經(jīng)吸引了全新的程序員受眾。JavaScript 的可用性和靈活性吸引了來自世界各地的自學成才的程序員。在計算機科學的歷史中,編程還從沒有如此容易過。學習編程的在線資源的品質(zhì)和數(shù)量(以及遇到困難時獲取的幫助)真的令人驚訝和鼓舞人心。所以對于那些新(可能是自學)的程序員,我表示歡迎。
當然,還有像我這樣已經(jīng)做過一段時間編程的程序員。與同時代的很多程序員一樣,我也是從匯編和BASIC 開始的,然后經(jīng)歷了Pascal、C++、Perl、Java、PHP、Ruby、C、C#和JavaScript。上大學時,我接觸過更加小眾的語言,比如ML、LISP 和PROLOG。這些語言很多都接近我的理想選擇,但沒有一個像JavaScrip 這樣讓我覺得前景如此光明。所以這本書也是給像我這樣的程序員寫的,他們經(jīng)驗豐富,可能對特定技術的認識更富哲理。
你不一定要有Node 方面的經(jī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)上使用。這些示例主要面向命令行(終端)用戶,所以你應該熟悉你所使用的系統(tǒng)的終端。
最重要的是,本書是為那些躍躍欲試的程序員準備的。他們對互聯(lián)網(wǎng)的未來感到興奮,并且想?yún)⑴c其中。他們對學新東西、新技術和Web 開發(fā)的新方式感到興奮。親愛的讀者,如果你沒有興奮感,我希望你讀完本書時能有這種感覺。
Ethan Brown,美國俄勒岡州Pop Art公司的高級軟件工程師,負責網(wǎng)站及Web服務架構的設計與實現(xiàn)。擁有20多年編程經(jīng)驗,從事過嵌入式開發(fā)和Web開發(fā),他相信JavaScript技術棧是未來的Web平臺。
序XIV
前言XV
第1章初識Express
1.1JavaScript革命
1.2初識Express
1.3Express簡史
1.4升級到Express4.0
1.5Node:一種新型Web服務器
1.6Node的生態(tài)系統(tǒng)
1.7授權
第2章從Node開始
2.1獲取Node
2.2使用終端
2.3編輯器
2.4npm
2.5用Node實現(xiàn)的簡單Web服務器
2.5.1HelloWorld
2.5.2事件驅(qū)動編程
2.5.3路由
2.5.4靜態(tài)資源服務
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小結
第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技術概覽
5.5運行你的服務器
5.6頁面測試
5.7跨頁測試
5.8邏輯測試
5.9去毛
5.10鏈接檢查
5.11用Grunt實現(xiàn)自動化
5.12持續(xù)集成
第6章請求和響應對象
6.1URL的組成部分
6.2HTTP請求方法
6.3請求報頭
6.4響應報頭
6.5互聯(lián)網(wǎng)媒體類型
6.6請求體
6.7參數(shù)
6.8請求對象
6.9響應對象
6.10獲取更多信息
6.11小結
6.11.1內(nèi)容渲染
6.11.2處理表單
6.11.3提供一個API
第7章Handlebars模板引擎
7.1唯一一條絕對規(guī)則
7.2選擇模板引擎
7.3Jade:不走尋常路
7.4Handlebars基礎
7.4.1注釋
7.4.2塊級表達式
7.4.3服務器端模板
7.4.4視圖和布局
7.4.5在Express中使用(或不使用)布局
7.4.6局部文件
7.4.7段落
7.4.8完善你的模板
7.4.9客戶端Handlebars
7.5小結
第8章表單處理
8.1向服務器發(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)相關的問題
12.1執(zhí)行環(huán)境
12.2環(huán)境特定配置
12.3擴展你的網(wǎng)站
12.3.1用應用集群擴展
12.3.2處理未捕獲的異常
12.3.3用多臺服務器擴展
12.4網(wǎng)站監(jiān)控
12.4.1第三方正常運行監(jiān)控
12.4.2應用程序故障
12.5壓力測試
第13章持久化
13.1文件系統(tǒng)持久化
13.2云持久化
13.3數(shù)據(jù)庫持久化
13.3.1關于性能
13.3.2設置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服務器端JavaScript中的靜態(tài)資源
16.4客戶端JavaScript中的靜態(tài)資源
16.5提供靜態(tài)資源
16.6修改靜態(tài)內(nèi)容
16.7打包和縮小
16.8關于第三方庫
16.9QA
16.10小結
第17章在Express中實現(xiàn)MVC
17.1模型
17.2視圖模型
17.3控制器
17.4小結
第18章安全
18.1HTTPS
18.1.1生成自己的證書
18.1.2使用免費的證書頒發(fā)機構
18.1.3購買證書
18.1.4對你的Express應用啟用HTTPS
18.1.5關于端口的說明
18.1.6HTTPS和代理
18.2跨站請求偽造
18.3認證
18.3.1認證與授權
18.3.2密碼的問題
18.3.3第三方認證
18.3.4把用戶存在數(shù)據(jù)庫中
18.3.5認證與注冊和用戶體驗
18.3.6Passport
18.3.7基于角色的授權
18.3.8添加更多認證提供者
18.4小結
第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小結
第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域名注冊和托管服務
21.1.1域名系統(tǒng)
21.1.2安全
21.1.3頂級域名
21.1.4子域名
21.1.5域名服務器
21.1.6托管
21.1.7部署
21.2小結
第22章維護
22.1維護的原則
22.1.1有長遠規(guī)劃
22.1.2使用源碼控制系統(tǒng)
22.1.3使用問題追蹤系統(tǒng)
22.1.4良好的衛(wèi)生習慣
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代碼重用及重構
22.2.1私有npm庫
22.2.2中間件
22.3小結
第23章其他資源
23.1在線文檔
23.2期刊
23.3StackOverflow
23.4為Express做貢獻
23.5小結
關于封面
關于作者