無論是開發(fā) Web 客戶端應用程序還是全功能型的單頁面應用程序,Angular 2 Web框架都能帶來一種解放式的體驗。它的聲明式風格使其易于定義和添加功能,而不用手工編寫大量代碼,TypeScript 也被完整集成進來,為JavaScript生態(tài)系統(tǒng)提供了靜態(tài)類型語言的優(yōu)勢。值得一提的是,掌握Angular 2和TypeScript能夠讓你在職場更加搶手。
前 言
Angular 2應用程序能夠支持使用兩種JavaScript語法(ES5和ES6)進行開發(fā),同樣也支 持使用Dart或TypeScript進行開發(fā)?蚣鼙旧硎褂肨ypeScript開發(fā),在本書中,我們同樣使 用TypeScript編寫所有代碼示例。在附錄B中的“為什么使用TypeScript編寫Angular應用程 序?”一節(jié)中,解釋了選擇TypeScript進行開發(fā)的理由。
我們兩個都是開發(fā)者,編寫這本書也是為了幫助與我們一樣的開發(fā)者。我們不僅使用 最基礎的代碼示例解釋框架的特性,還循序漸進地展示如何通過本書搭建一個單頁面的在 線拍賣應用程序。
當還在編寫和修改本書時,我們使用本書的代碼示例開展了幾次培訓,這使得我們能 夠在早期就得到對本書內(nèi)容的反饋(這些絕對是正面的反饋)。我們真的希望你會喜歡學習 Angular 2的過程。
本書涵蓋了Angular 2正式版的內(nèi)容。
如何閱讀本書
在早期的草稿中,本書是從ECMAScript 6和TypeScript開始講解的。幾位審稿人建 議我們把這部分內(nèi)容移到附錄中,以便讀者能夠盡快開始學習Angular。我們聽取了這個 建議,但如果你并不熟悉ECMAScript 6和TypeScript的語法,可以首先閱讀附錄部分的內(nèi) 容,這能幫助你更容易地理解每章的代碼示例。
學習路線圖
本書由10章和兩個附錄組成。
第1章是對Angular 2架構的高級概述,簡要總結了流行的JavaScript框架和庫,并介紹 了將從第2章開始開發(fā)的示例:在線拍賣應用程序。
你將使用TypeScript開發(fā)示例應用程序。TypeScript是JavaScript的一個超集,附錄B能 夠讓你快讀掌握這門優(yōu)秀的語言。你不僅將學習如何編寫類、接口和泛型,還會學習如何 把TypeScript編譯成可以被任何瀏覽器使用的JavaScript(ECMAScript 5)。TypeScript實現(xiàn)了 最新的ECMAScript 6(附錄A中會介紹)規(guī)范中大部分的語法以及ECMAScript即將發(fā)布的規(guī) 范中的一些語法。
第2章將引導你開發(fā)一些簡單的Angular 2應用程序,你將創(chuàng)建首個Angular組件。該章 介紹如何使用SystemJS模塊加載器,并提供我們自己開發(fā)的Angular種子工程,這個工程 是本書中所有示例應用程序的基礎。在第2章結尾處,將會創(chuàng)建在線拍賣應用程序的第一 版首頁。
第3章將介紹Angular路由,它為單頁面應用程序提供了一種彈性的路由機制。將會介 紹如何在父組件和子組件中配置路由,如何在路由之間傳遞數(shù)據(jù),如何延遲加載模塊。在 第3章結尾處,將會以多組件的方案重構在線拍賣應用程序,并為其添加路由功能。
第4章將介紹依賴注入(Dependency Injection)設計模式,以及Angular是如何實現(xiàn)該模 式的。你將熟悉provider的概念,provider能夠指定如何實例化注入對象。在新版的在線拍 賣程序中,使用依賴注入把數(shù)據(jù)填充到產(chǎn)品詳情視圖中。
在第5章將討論不同種類的數(shù)據(jù)綁定,介紹利用observable數(shù)據(jù)流的響應式編程,以及 如何使用管道。在第5章結尾處將會開發(fā)新版本的在線拍賣應用程序,為其添加observable 事件流,用來在首頁過濾特色產(chǎn)品。
第6章介紹如何以松耦合的方式實現(xiàn)組件間的相互通信。我們將會討論組件的輸入和 輸出屬性、中介者模式、組件的聲明周期。第6章還包括對Angular變更檢測機制的高級概 述,并為在線拍賣系統(tǒng)增加評分功能。
第7章介紹如何處理Angular的表單。首先會介紹Forms API的基礎知識,隨后討論 表單的驗證,并為在線拍賣應用程序創(chuàng)建一個新的版本,在其中的搜索組件中實現(xiàn)表單 驗證功能。
第8章解釋Angular客戶端應用程序如何使用HTTP和WebSocket協(xié)議與服務器端通信, 并給出了示例。服務器應用程序可以使用Node.js和Express框架創(chuàng)建,之后在Node服務 器端部署Angular在線拍賣應用程序。前端頁面通過HTTP和WebSocket協(xié)議與服務器端的 Node.js通信。
第9章將介紹單元測試,其中覆蓋了Jasmine的基礎知識以及Angular測試庫的內(nèi)容。從 中你能夠學會如何測試服務、組件和路由,以及如何配置和使用Karma運行測試用例,并 為在線拍賣應用程序實現(xiàn)若干單元測試用例。
第10章是關于自動構建以及部署流程的介紹,將介紹如何使用Webpack打包工具壓縮 和打包代碼用于部署,還介紹如何使用Angular CLI生成項目并部署。在線拍賣應用程序部 署版本的大小會從5.5MB(開發(fā)環(huán)境)降低到350KB(生產(chǎn)環(huán)境)。
附錄A將會使你熟悉ECMAScript 2015( 也叫ES6) 所引入的新語法。附錄B是對 TypeScript 語言的介紹。
代碼約定和下載
本書涵蓋了許多示例及源代碼,有一些在被編號的代碼清單中,另外一些穿插在正文 中。無論代碼在上面兩處中的哪處出現(xiàn),源代碼都會按照固定寬度的字體進行格式化。在 很多情況下,原始的源代碼已經(jīng)被重新格式化,添加了換行符并根據(jù)需要進行縮進,以適 應每一頁的寬度。在某些特殊情況下,換行和縮進仍然無法滿足格式要求,此時將在代碼 清單中使用行繼續(xù)符號()。另外當在正文中描述代碼時,通常會從代碼清單中刪除源代 碼的注釋。那些帶有注釋的代碼清單,則突出了相應概念的重要性。
本書示例的源代碼可從網(wǎng)站https://www.manning.com/books/angular-2-developmentwith- typescript下載。讀者也可以通過掃描封底的二維碼來用手機下載。
本書作者在GitHub上同樣維護了一個倉庫,其中包括了所有示例的源代碼,網(wǎng)址為 https://github.com/Farata/angular2typescript。如果本書的代碼在未來不適用于Angular發(fā)布的 新版本,可以在GitHub倉庫中提交問題,本書作者將會解決這些問題。
作者在線
購買本書后可以免費訪問由Manning出版社運營的一個非公開論壇,讀者可以在其 中對本書進行評論,咨詢技術問題,從作者和其他用戶那里獲得幫助。在瀏覽器中打開 https://www.manning.com/books/angular-2-development-with-typescript 即可訪問和訂閱論 壇。從該頁面可以了解到一旦注冊成功后,如何進入論壇,可以獲得哪些幫助以及論壇上 的行為規(guī)范。
Manning 出版社承諾為讀者提供一個平臺,從而在讀者之間以及讀者和作者之間提供 有意義的交流渠道。作者并不會對參與交流的程度做任何承諾,他們對AO 論壇的貢獻完 全出于自愿(且是無償?shù)?。建議讀者向作者提出一些有挑戰(zhàn)性的問題,這才能讓作者有興 趣回答。
Yakov Fain和Anton Moiseev都是具備豐富Web應用程序 開發(fā)經(jīng)驗的資深開發(fā)者,Yakov擁有Java Champion稱號,曾 經(jīng)出版了軟件開發(fā)領域的多本書籍。