《基於MVC的JavaScript Web富套用開發》是2012年電子工業出版社出版的圖書,作者是麥卡勞。
基本介紹
- 書名:基於MVC的JavaScript Web富套用開發
- 作者:(美)麥卡勞(MacCaw,A.)
- ISBN:9787121109560
- 出版社:電子工業出版社
基本信息,作者介紹,內容簡介,目錄,前言,
基本信息
譯者:李晶張散集
出版日期:2012 年5月
開本:16開
頁碼:1
版次:1-1
作者介紹
Alex MacCaw,是一名Ruby/JavaScript程式設計師,在開源社區中很有名望,是Spine框架的作者,開發過Taskforce,Socialmod等大型開源項目,同時活躍在紐約、舊金山和柏林的各大Ruby/Rails會議。
內容簡介
如今web 應用程式的開發已經越來越向傳統套用軟體開發靠攏了,web 和套用之間的界限也進一步模糊。傳統程式語言中的設計模式、mvc、套用架構等理論也在慢慢地融入web 前端開發。這本書所涵蓋的知識點非常全面,從mvc 的基本理論到網路協定、從模組解耦到異步編程模型、從html5/css3 到nodejs、從軟體測試到部署調試,對於很多前端工程師來說,這些知識正是突破自己的瓶頸所亟需的。
《基於mvc的javascript web富套用開發》將專注於講述如何構建“優雅又不失高水準”(state of the art)的javascript 套用,包括軟體架構、模板引擎、框架和庫、同伺服器的訊息通信等內容。書中同樣提供了大量的示例代碼,可以幫助你更深入地理解很多重要的概念。除此之外,作者在mvc 和架構方面的很多觀點都很有啟發性,即使你不是一名javascript 程式設計師,讀完本書後也會受益匪淺
目錄
《基於mvc的javascript web富套用開發》
第1章 mvc和類 1
最初 1
增加結構 2
什麼是mvc 2
模型 3
視圖 4
控制器 5
向模組化進軍,創建類 6
給類添加函式7
給“類”庫添加方法 8
基於原型的類繼承 10
給“類”庫添加繼承 11
函式調用 12
控制“類”庫的作用域 15
添加私有函式17
“類”庫 18
第2章 事件和監聽 21
監聽事件 21
事件順序 22
取消事件 23
事件對象 23
事件庫 25
切換上下文 26
委託事件 26
自定義事件 27
自定義事件和jquery 外掛程式 28
dom 無關事件 30
第3章 模型和數據 33
mvc 和命名空間 33
構建對象關係映射(orm) 34
原型繼承 35
添加orm 屬性 36
持久化記錄37
增加id 支持 39
定址引用 40
裝載數據 41
直接嵌套數據 42
通過ajax 載入數據 42
jsonp 46
跨域請求的安全性 46
向orm 中添加記錄 47
本地存儲數據47
給orm 添加本地存儲 49
將新記錄提交給伺服器 51
第4章 控制器和狀態 53
模組模式 54
全局導入 54
全局導出 54
添加少量上下文 55
抽象出庫 56
文檔載入完成後載入控制器 58
訪問視圖 59
委託事件 61
狀態機 63
路由選擇 65
使用url 中的hash 65
檢測hash 的變化 66
抓取ajax 67
使用html5 history api 68
第5章 視圖和模板 71
動態渲染視圖71
模板 73
模板helpers 75
模板存儲 75
綁定 77
模型中的事件綁定 78
第6章 依賴管理 81
commonjs 82
模組的聲明83
模組和瀏覽器 83
模組載入器 84
yabble 84
requirejs 85
包裝模組 87
模組的按需載入 88
labjs 89
無互動行為內容的閃爍(fubc) 89
第7章 使用檔案 91
瀏覽器支持 91
獲取檔案信息92
檔案輸入 92
拖曳 93
拖曳 94
釋放拖曳 96
撤銷默認的drag/drop 97
複製和貼上 97
複製 98
貼上 99
讀檔案 100
二進制大檔案和檔案切割101
自定義瀏覽器按鈕 102
上傳檔案 102
ajax 進度條 104
jquery 拖曳上傳 106
創建拖曳目標區域 106
上傳檔案 107
第8章 實時web 109
實時web 的發展歷史 109
websocket 110
nodejs 和socketio 114
實時架構 116
感知速度 117
第9章 測試和調試 119
單元測試 121
斷言 121
qunit 122
jasmine 126
驅動 128
無界面的測試 131
zombie 132
ichabod 134
分散式測試135
提供支持 136
調試工具 136
web inspector 136
firebug 138
控制台 139
控制台函式 140
使用javascript 調試器141
分析網路請求 143
profile 和函式運行時間 144
第10章 部署 147
性能 147
快取 148
源碼壓縮(minification)150
gzip 壓縮151
使用cdn152
審查工具 153
外部資源 154
第11章 spine類庫 155
設定 156
類156
實例化156
類擴展157
上下文158
事件 159
模型 160
獲取記錄 161
模型事件 162
校驗 163
持久化163
控制器 165
代理 166
元素 167
委託事件 167
控制器事件 168
全局事件 168
渲染模式 169
元素模式 169
構建聯繫人管理套用171
聯繫人模型 172
側邊欄控制器 173
聯繫人控制器 175
應用程式控制器178
第12章 backbone類庫 181
模型 182
模型和屬性 182
集合 184
控制集合的內部順序 185
視圖 185
渲染視圖 186
委託事件 187
綁定和上下文 187
控制器 188
與伺服器的同步 190
填充集合 192
伺服器端 192
自定義行為 193
構建to-do 列表套用195
第13章 javascriptmvc類庫 203
設定 204
class 204
實例化205
調用基類的方法205
代理 205
靜態繼承 206
自省 206
一個模型的例子207
模型 207
屬性和可觀察 208
擴展模型 210
setter 210
defaults 211
輔助方法 211
服務封裝 212
類型轉換 215
crud 事件 216
在視圖中使用客戶端模板 216
基本用法 217
jquery 修改器217
用script 標籤載入 217
$.view 和子模板 218
延時對象 218
打包、預載入和性能 219
$.controller :jquery 外掛程式工廠220
概覽 222
控制器實例化 222
事件綁定 223
模板動作 224
大綜合:一個抽象的crud 列表 225
附錄a jquery基礎 227
附錄b css擴展 239
附錄c css3參考 245
索引 267
前言
1995 年隨著Netscape 瀏覽器的發布,JavaScript 也作為它的組成部分進入到公眾的視野,之後JavaScript 的發展道路儘管充滿坎坷但成長飛速,如今得益於高性能的JIT(just intime)解析引擎,(在瀏覽器端)JavaScript 已經無孔不入了。僅僅在5 年以前,開發者還在使用Ajax 寫一些短小的代碼或熱衷於實現一些類似“黃色漸褪技術”的網頁特效;而現在,複雜的JavaScript 套用已經可以寫上成百上千行的代碼了。
就在去年,網際網路出現了一股追捧JavaScript 套用的浪潮,很多人開始著迷於給Web 套用加入很多桌面軟體的互動元素,增強Web 套用的用戶體驗,這種趨勢猶如星星之火迅速蔓延至整個網際網路。在過去,在瀏覽器性能不佳的情況下,用戶在進行Web 套用時每次互動都要刷新頁面,而且頁面載入很慢。而如今JavaScript 引擎已經變得異常強大,我們可以將很多互動行為植入客戶端,這樣互動的回響就會非常及時,增強體驗。
當然獲得提升的不僅僅是JavaScript 引擎的性能。儘管CSS3 和HTML5 規範現在仍在修訂之中,也已經有很多現代瀏覽器廣泛支持這些新特性了,比如Safari、Chrome 和Firefox,IE9 也在一定程度上支持這些新特性。利用這些特性可以花更少的時間做出更棒的視覺效果,而且不用花精力做圖片的切割和拼合來模擬視覺效果。現在瀏覽器的升級也很快,對HTML5 和CSS3 的支持也一天比一天好。但你還是要定義一個瀏覽器測試基準(你的套用所支持的最低標準的客戶端軟體和版本),基於此才能更加合理地選擇所需的技術。
將套用的重心從伺服器遷移到客戶端並不輕鬆,這和構建伺服器套用的方法完全不一樣。你需要想清楚架構、模板、與伺服器端的通信、框架等,這些正是本書所涵蓋的內容。我將手把手教你如何構建“優雅又不失高水準”的JavaScript 套用。
本書的目標讀者
本書不是為JavaScript 初學者所寫,如果你對JavaScript 這門語言缺乏基本的了解和認識,我建議你先閱讀一些更基礎的書,比如Douglas Crockford 著的JavaScript: TheGood Parts。本書更適合有一些JavaScript 開發經驗的開發者,比如使用jQuery 類庫的開發者,或者當你希望構建更複雜、更高級的JavaScript 套用時,本書也是適合你的。此外,本書的很多章節,特別是附錄,對於有經驗的JavaScript 開發者來說也是非常有幫助的。
本書的內容組織
第1 章
本章從JavaScript 的發展歷程開始,介紹了JavaScript 的發展現狀和對網際網路的巨大影響。然後輕描淡寫地介紹了MVC 的基本概念,隨後又講解了JavaScript 的構造函式、原型繼承及如何使用JavaScript 創建一個類庫。
第2 章
本章主要介紹了瀏覽器的事件機制,包括事件機制的發展歷史,API 設計和事件模型的行為和實現。然後講解了如何基於jQuery 綁定事件監聽、使用代理,以及創建自定義事件。最後使用發布/ 訂閱模式實現了“DOM 無關”事件。
第3 章
本章講解了如何在你的套用中使用MVC 模型,包括載入和操作遠程數據。我們將會提到為什麼在構建ORM 類庫的時候使用MVC 和命名空間是如此之重要,以及如何使用ORM 類庫來管理模型數據。接下來講解了如何使用JSONP 和跨域Ajax來載入遠程數據。最後介紹了如何通過使用HTML5 本地存儲和將本地存儲提交至RESTful 伺服器,來實現模型數據的持久化。
第4 章
本章演示了如何使用控制器模式在客戶端保持一個狀態。我們將討論如何將邏輯封裝成模組、阻止全局命名空間的污染,然後介紹如何使用視圖來進一步簡化控制器的結構,以及怎樣在視圖中實現DOM 事件監聽。本章的最後將會討論路由選擇,包括使用URL 中的hash 片段,使用新的HTML5 History API 等技術,以及確保解釋兩種方法的利弊。
第5 章
本章介紹了視圖和JavaScript 模板,給出了多種動態渲染視圖的方式,以及很多模板類庫和存儲模板的方式(使用行內形式存儲模板、使用script 標籤,以及遠程載入)。接下來,你會接觸到數據綁定的一些內容,包括使模型控制器、視圖與模型數據、視圖數據動態同步連線。
第6 章
本章詳細介紹了使用CommonJS 模組系統來做JavaScript 的依賴管理。開始會介紹CommonJS 背後的歷史和思想,接下來會講解如何在瀏覽器端使用CommonJS模組,包括介紹一些模組載入器類庫,比如Yabble 和RequireJS。然後,我們討論了如何自動在伺服器端包裝模組,從而提高性能、節省時間。本章的最後會介紹CommonJS 的一些替代方案,比如Sprockets 和LABjs。
第7 章
這裡將會講到HTML5 帶給我們的一些好處:檔案操作API。本章將會涵蓋檔案操作API 的瀏覽器支持情況、多檔案上傳、拖曳上傳檔案及使用剪下板事件。接下來會介紹使用二進制大檔案和檔案切割來讀檔案,同時將讀取的結果在瀏覽器中輸出。然後講解使用XHR(XMLHttpRequest)Level 2 規範來實現在後台上傳檔案,最後向大家展示一個使用jQuery Ajax API 實現檔案上傳進度指示的例子。
第8 章
本章主要關注實時套用和WebSocket 技術的一些令人興奮的發展趨勢。首先介紹實時套用的發展歷史及各種實現技術的瀏覽器兼容性情況。然後更詳細地介紹WebSocket 和基於它的更高級的實現,包括瀏覽器兼容性和JavaScript API。接下來展示一個使用WebSocket 實現的簡單的RPC 服務,看一下如何在客戶端和伺服器端之間建立連線。然後介紹=如何搭建實時架構,最後介紹用戶體驗方面的一些考量。
第9 章
本章主要講解測試和調試的內容,這些內容是JavaScript 網路套用開發過程中的關鍵環節。我們的話題將圍繞跨瀏覽器測試的主題進行展開,介紹瀏覽器基準的選擇、單元測試和測試類庫,比如QUnit 和Ja smine。接下來,介紹自動化測試和持續集成伺服器,比如Selenium。然後講解調試相關的內容,研究了Firefox 和WebKit 網路監測器、主控台,以及使用JavaScript 調試器。
第10 章
本章介紹了另外一個非常重要卻又極易被忽略的內容——JavaScript 網路套用的部署。我們主要考慮性能方面,以及如何使用快取、代碼壓縮、gzip 壓縮及其他減少套用初始化載入時間的技術。最後簡單講解了如何使用CDN 伺服器來讓我們的工作事半功倍,以及如何使用瀏覽器內置的策略來提升你站點的性能。
第11 章
接下來的3 章主要介紹了一些流行的JavaScript 類庫,這些類庫常用來做JavaScript套用開發。Spine 是一個輕量級的MVC-compliant 類庫,這個類庫使用了本書中講到的很多概念。本章將會為你介紹類庫的核心部分:類、事件、模型和控制器。最後本章用一個管理套用的例子來展示本章所講到的知識點。
第12 章
Backbone 是一個非常流行的類庫,使用這個類庫可以非常高效地構建JavaScript 套用,本章主要介紹這個類庫。本章會涵蓋Backbone 的核心觀念和類,比如模型、集合、控制器和視圖等。接下來會介紹使用RESTful JSON請求從伺服器同步獲取模型數據,以及如何在伺服器端回響Backbone。最後我們給出一個待辦事項列表套用的例子,來向大家展示如何使用這個類庫。
第13 章
本章主要介紹了JavaScriptMVC 類庫,這是一個流行的基於jQuery 的框架,用來構建JavaScript 網路套用。在本章中你將會學到JavaScriptMVC 的一些基礎知識,比如類、模型和控制器,同時還包含客戶端的模板及渲染視圖。本章的最後會給出一個實際的CRUD 列表的例子,給讀者展示使用JavaScriptMVC 創建抽象的、可重用的、節省記憶體的組件是多么的簡單。
附錄A
附錄A 中是對jQuery 的簡要介紹,如果你想溫習類庫內容,則這部分內容對你會非常有幫助。本書中大部分示例代碼都是基於jQuery 的,首先熟悉jQuery 是很重要的。這一部分會講到大部分核心的API,比如DOM 操作、DOM 查詢和遍歷,以及事件綁定、觸發和事件代理。接下來會講解jQuery 的Ajax API,包括POST、GET 和JSON 請求。隨後將介紹jQuery 擴展,如何使用jQuery 來封裝一個外掛程式,讓你的代碼更具通用性。最後展示了一個實際的例子:創建一個Growl jQuery 外掛程式。
附錄B
附錄B 的內容主要是講解Less,Less 是CSS 的超集,它使用變數、混合、操作符和優雅的規則擴展了CSS 本身的語法。利用這些規則可以極大地減少你所寫的CSS代碼量,特別是使用CSS3 效果更佳。附錄B 包含Less 的主要的增強的語法,以及如何使用命令行工具和JavaScript 類庫來將Less 檔案編譯成CSS。
附錄C
附錄C 主要講解了CSS3。首先介紹了一些CSS3 的背景知識、瀏覽器廠商的前綴,然後開始介紹CSS3 的主要內容,從主要附屬檔案到規格說明。這裡介紹的CSS 特性主要包括:圓角、rgba 顏色、陰影、漸變、動畫和變換。附錄的最後討論了使用Modernizr 實現的優雅降級,並展示了一個實際的使用box-sizing 規範的例子。