出版時(shí)間:2012-5 出版社:電子工業(yè)出版社 作者:麥卡勞 頁(yè)數(shù):282 字?jǐn)?shù):462000 譯者:李晶,張散集
Tag標(biāo)簽:無(wú)
前言
譯者序 從第一眼看到封面上這只憨憨的貓頭鷹開(kāi)始,就深深地喜歡上了這本JavaScript Web Applications,讀了簡(jiǎn)介和目錄之后就已經(jīng)不能自拔了。這幾年鮮有深入講架構(gòu)級(jí)web app 的好書,這讓這本JavaScript Web Applications 更加難得,作為O‘Reilly 第一本專注于純高端JavaScript 架構(gòu)思想的書,凡是有一點(diǎn)“架構(gòu)情節(jié)”的工程師都不應(yīng)當(dāng)錯(cuò)過(guò)?!? 如今Web 應(yīng)用程序的開(kāi)發(fā)已經(jīng)越來(lái)越向傳統(tǒng)應(yīng)用軟件開(kāi)發(fā)靠攏了,Web 和應(yīng)用之間的界限也進(jìn)一步模糊。傳統(tǒng)編程語(yǔ)言中的設(shè)計(jì)模式、MVC、應(yīng)用架構(gòu)等理論也在慢慢地融入Web 前端開(kāi)發(fā)。隨著服務(wù)器端JavaScript 和移動(dòng)終端的興起,作為一名前端工程師,也深知自己正處在一個(gè)深刻變革的年代,面對(duì)眼花繚亂的新概念和新技術(shù)更應(yīng)當(dāng)把握本質(zhì)、認(rèn)清方向,勇于創(chuàng)新和實(shí)踐,而這本JavaScript Web Applications 的出現(xiàn)更是一陣及時(shí)雨,為我們工作中遇到的很多難題提供了解決方案和最佳實(shí)踐。同時(shí),這本書所涵蓋的知識(shí)點(diǎn)非常全面,從MVC 的基本理論到網(wǎng)絡(luò)協(xié)議、從模塊解耦到異步編程模型、從HTML5/CSS3 到NodeJS、從軟件測(cè)試到部署調(diào)試,對(duì)于很多前端工程師來(lái)說(shuō),這些知識(shí)正是突破自己的瓶頸所亟需的?!? 這本書將專注于講述如何構(gòu)建“優(yōu)雅又不失高水準(zhǔn)”(state of the art)的JavaScript 應(yīng)用,包括軟件架構(gòu)、模板引擎、框架和庫(kù)、同服務(wù)器的消息通信等內(nèi)容。書中同樣提供了大量的示例代碼,可以幫助你更深入地理解很多重要的概念。除此之外,作者在MVC 和架構(gòu)方面的很多觀點(diǎn)都很有啟發(fā)性,即使你不是一名JavaScript 程序員,讀完本書后也會(huì)受益匪淺?!? 本書作者 Alex MacCaw 是一名Ruby/JavaScript 程序員,是Spine 框架的開(kāi)發(fā)者。在翻譯本書的過(guò)程中,我深深體會(huì)到他作為一名優(yōu)秀工程師所具備的扎實(shí)的計(jì)算機(jī)專業(yè)功底和讓人敬佩的開(kāi)源精神。盡管這本書包含大量的專業(yè)術(shù)語(yǔ),但作者文筆輕松流暢,即使直接讀原文也絲毫不會(huì)感到枯燥,所以我們?cè)诜g過(guò)程中也是非常小心,生怕丟掉這種輕松流暢的閱讀感覺(jué),盡力為大家原汁原味地呈現(xiàn)本書。當(dāng)然由于專業(yè)知識(shí)所限,翻譯過(guò)程難免疏漏,還希望各位高手批評(píng)指正?!? 最后,我要感謝博文視點(diǎn)的張春雨在譯書過(guò)程中給予我們的幫助和信任。感謝我的好友王保平(玉伯)對(duì)很多關(guān)鍵的技術(shù)性問(wèn)題提出的寶貴意見(jiàn),還要感謝可愛(ài)的同事楊振楠(棟寒)、楊翰文(地極)、李燕青(霸先)、車思慧(靈玉)、陳良(舒克)的細(xì)心校對(duì),他們給譯文提了很多中肯的建議。當(dāng)然,最最需要感謝的是家中的“領(lǐng)導(dǎo)”,已經(jīng)記不得多少次趕譯稿加班太晚,得到的不是你的抱怨,而是你的鼓勵(lì),這讓我至今備感溫暖?!? 李晶(拔赤),張散集(一舟) 2011 年12 月 北京 前 言 1995 年隨著Netscape 瀏覽器的發(fā)布,JavaScript 也作為它的組成部分進(jìn)入到公眾的視野,之后JavaScript 的發(fā)展道路盡管充滿坎坷但成長(zhǎng)飛速,如今得益于高性能的JIT(just intime)解析引擎,(在瀏覽器端)JavaScript 已經(jīng)無(wú)孔不入了。僅僅在5 年以前,開(kāi)發(fā)者還在使用Ajax 寫一些短小的代碼或熱衷于實(shí)現(xiàn)一些類似“黃色漸褪技術(shù)”的網(wǎng)頁(yè)特效;而現(xiàn)在,復(fù)雜的JavaScript 應(yīng)用已經(jīng)可以寫上成百上千行的代碼了?!? 就在去年,互聯(lián)網(wǎng)出現(xiàn)了一股追捧JavaScript 應(yīng)用的浪潮,很多人開(kāi)始著迷于給Web 應(yīng)用加入很多桌面軟件的交互元素,增強(qiáng)Web 應(yīng)用的用戶體驗(yàn),這種趨勢(shì)猶如星星之火迅速蔓延至整個(gè)互聯(lián)網(wǎng)。在過(guò)去,在瀏覽器性能不佳的情況下,用戶在進(jìn)行Web 應(yīng)用時(shí)每次交互都要刷新頁(yè)面,而且頁(yè)面加載很慢。而如今JavaScript 引擎已經(jīng)變得異常強(qiáng)大,我們可以將很多交互行為植入客戶端,這樣交互的響應(yīng)就會(huì)非常及時(shí),增強(qiáng)體驗(yàn)?!? 當(dāng)然獲得提升的不僅僅是JavaScript 引擎的性能。盡管CSS3 和HTML5 規(guī)范現(xiàn)在仍在修訂之中,也已經(jīng)有很多現(xiàn)代瀏覽器廣泛支持這些新特性了,比如Safari、Chrome 和Firefox,IE9 也在一定程度上支持這些新特性。利用這些特性可以花更少的時(shí)間做出更棒的視覺(jué)效果,而且不用花精力做圖片的切割和拼合來(lái)模擬視覺(jué)效果。現(xiàn)在瀏覽器的升級(jí)也很快,對(duì)HTML5 和CSS3 的支持也一天比一天好。但你還是要定義一個(gè)瀏覽器測(cè)試基準(zhǔn)(你的應(yīng)用所支持的最低標(biāo)準(zhǔn)的客戶端軟件和版本),基于此才能更加合理地選擇所需的技術(shù)。 將應(yīng)用的重心從服務(wù)器遷移到客戶端并不輕松,這和構(gòu)建服務(wù)器應(yīng)用的方法完全不一樣。你需要想清楚架構(gòu)、模板、與服務(wù)器端的通信、框架等,這些正是本書所涵蓋的內(nèi)容。我將手把手教你如何構(gòu)建“優(yōu)雅又不失高水準(zhǔn)”的JavaScript 應(yīng)用。
內(nèi)容概要
如今Web 應(yīng)用程序的開(kāi)發(fā)已經(jīng)越來(lái)越向傳統(tǒng)應(yīng)用軟件開(kāi)發(fā)靠攏了,Web
和應(yīng)用之間的界限也進(jìn)一步模糊。傳統(tǒng)編程語(yǔ)言中的設(shè)計(jì)模式、MVC、應(yīng)用架構(gòu)等理論也在慢慢地融入Web
前端開(kāi)發(fā)。這本書所涵蓋的知識(shí)點(diǎn)非常全面,從MVC 的基本理論到網(wǎng)絡(luò)協(xié)議、從模塊解耦到異步編程模型、從HTML5/CSS3
到NodeJS、從軟件測(cè)試到部署調(diào)試,對(duì)于很多前端工程師來(lái)說(shuō),這些知識(shí)正是突破自己的瓶頸所亟需的。
《基于MVC的JavaScript Web富應(yīng)用開(kāi)發(fā)》將專注于講述如何構(gòu)建“優(yōu)雅又不失高水準(zhǔn)”(state of the
art)的JavaScript
應(yīng)用,包括軟件架構(gòu)、模板引擎、框架和庫(kù)、同服務(wù)器的消息通信等內(nèi)容。書中同樣提供了大量的示例代碼,可以幫助你更深入地理解很多重要的概念。除此之外,作者在MVC
和架構(gòu)方面的很多觀點(diǎn)都很有啟發(fā)性,即使你不是一名JavaScript 程序員,讀完本書后也會(huì)受益匪淺。
作者簡(jiǎn)介
Alex
MacCaw,是一名Ruby/JavaScript程序員,在開(kāi)源社區(qū)中很有名望,是Spine框架的作者,開(kāi)發(fā)過(guò)Taskforce,Socialmod等大型開(kāi)源項(xiàng)目,同時(shí)活躍在紐約、舊金山和柏林的各大Ruby/Rails會(huì)議。
書籍目錄
第1章 MVC和類
最初
增加結(jié)構(gòu)
什么是MVC
模型
視圖
控制器
向模塊化進(jìn)軍,創(chuàng)建類
給類添加函數(shù)
給"類"庫(kù)添加方法
基于原型的類繼承
給"類"庫(kù)添加繼承
函數(shù)調(diào)用
控制"類"庫(kù)的作用域
添加私有函數(shù)
"類"庫(kù)
第2章 事件和監(jiān)聽(tīng)
監(jiān)聽(tīng)事件
事件順序
取消事件
事件對(duì)象
事件庫(kù)
切換上下文
委托事件
自定義事件
自定義事件和jQuery 插件
DOM 無(wú)關(guān)事件
第3章 模型和數(shù)據(jù)
MVC 和命名空間
構(gòu)建對(duì)象關(guān)系映射(ORM)
原型繼承
添加ORM 屬性
持久化記錄
增加ID 支持
尋址引用
裝載數(shù)據(jù)
直接嵌套數(shù)據(jù)
通過(guò)Ajax 載入數(shù)據(jù)
JSONP
跨域請(qǐng)求的安全性
向ORM 中添加記錄
本地存儲(chǔ)數(shù)據(jù)
給ORM 添加本地存儲(chǔ)
將新記錄提交給服務(wù)器
第4章 控制器和狀態(tài)
模塊模式
全局導(dǎo)入
全局導(dǎo)出
添加少量上下文
抽象出庫(kù)
文檔加載完成后載入控制器
訪問(wèn)視圖
委托事件
狀態(tài)機(jī)
路由選擇
使用URL 中的hash
檢測(cè)hash 的變化
抓取Ajax
使用HTML5 History API
第5章 視圖和模板
動(dòng)態(tài)渲染視圖
模板
模板Helpers
模板存儲(chǔ)
綁定
模型中的事件綁定
第6章 依賴管理
CommonJS
模塊的聲明
模塊和瀏覽器
模塊加載器
Yabble
RequireJS
包裝模塊
模塊的按需加載
LABjs
無(wú)交互行為內(nèi)容的閃爍(FUBC)
第7章 使用文件
瀏覽器支持
獲取文件信息
文件輸入
拖曳
拖曳
釋放拖曳
撤銷默認(rèn)的Drag/Drop
復(fù)制和粘貼
復(fù)制
粘貼
讀文件
二進(jìn)制大文件和文件切割
自定義瀏覽器按鈕
上傳文件
Ajax 進(jìn)度條
jQuery 拖曳上傳
創(chuàng)建拖曳目標(biāo)區(qū)域
上傳文件
第8章 實(shí)時(shí)Web
實(shí)時(shí)Web 的發(fā)展歷史
WebSocket
Nodejs 和SocketIO
實(shí)時(shí)架構(gòu)
感知速度
第9章 測(cè)試和調(diào)試
單元測(cè)試
斷言
QUnit
Jasmine
驅(qū)動(dòng)
無(wú)界面的測(cè)試
Zombie
Ichabod
分布式測(cè)試
提供支持
調(diào)試工具
Web Inspector
Firebug
控制臺(tái)
控制臺(tái)函數(shù)
使用JavaScript 調(diào)試器
分析網(wǎng)絡(luò)請(qǐng)求
Profile 和函數(shù)運(yùn)行時(shí)間
第10章 部署
性能
緩存
源碼壓縮(Minification)
Gzip 壓縮
使用CDN
審查工具
外部資源
第11章 Spine類庫(kù)
設(shè)置
類
實(shí)例化
類擴(kuò)展
上下文
事件
模型
獲取記錄
模型事件
校驗(yàn)
持久化
控制器
代理
元素
委托事件
控制器事件
全局事件
渲染模式
元素模式
構(gòu)建聯(lián)系人管理應(yīng)用
聯(lián)系人模型
側(cè)邊欄控制器
聯(lián)系人控制器
應(yīng)用程序控制器
第12章 Backbone類庫(kù)
模型
模型和屬性
集合
控制集合的內(nèi)部順序
視圖
渲染視圖
委托事件
綁定和上下文
控制器
與服務(wù)器的同步
填充集合
服務(wù)器端
自定義行為
構(gòu)建To-Do 列表應(yīng)用
第13章 JavaScriptMVC類庫(kù)
設(shè)置
Class
實(shí)例化
調(diào)用基類的方法
代理
靜態(tài)繼承
自省
一個(gè)模型的例子
模型
屬性和可觀察
擴(kuò)展模型
Setter
Defaults
輔助方法
服務(wù)封裝
類型轉(zhuǎn)換
CRUD 事件
在視圖中使用客戶端模板
基本用法
jQuery 修改器
用Script 標(biāo)簽加載
$View 和子模板
延時(shí)對(duì)象
打包、預(yù)加載和性能
$Controller :jQuery 插件工廠
概覽
控制器實(shí)例化
事件綁定
模板動(dòng)作
大綜合:一個(gè)抽象的CRUD 列表
附錄A jQuery基礎(chǔ)
附錄B CSS擴(kuò)展
附錄C CSS3參考
索引
章節(jié)摘錄
版權(quán)頁(yè): 插圖: 第1章 MVC和類 最初 JavaScript程序開(kāi)發(fā)已經(jīng)和最初我們想象中的模樣有了天壤之別,也很少有人能記起從JavaScript誕生之初的Netscape瀏覽器到如今異常強(qiáng)大的解析引擎——比如Google的V8——的進(jìn)化歷程。JavaScript到ECMAScript的標(biāo)準(zhǔn)化道路也充滿坎坷。然而對(duì)于JavaScript的發(fā)明者來(lái)說(shuō),做夢(mèng)也不會(huì)想到JavaScript會(huì)有今天這么強(qiáng)大。盡管JavaScript已然非常成功和流行,但仍然被大多數(shù)人所誤解。只有少數(shù)人知道JavaScript是一種強(qiáng)大的、動(dòng)態(tài)的面向?qū)ο缶幊陶Z(yǔ)言。JavaScript中諸如原型繼承、模塊和命名空間等高級(jí)特性依然會(huì)讓很多人感到吃驚。那么,為什么這門語(yǔ)言會(huì)如此被誤解?一個(gè)原因是早期的JavaScript實(shí)現(xiàn)非常糟糕,有很多bug;另一個(gè)原因是因?yàn)槠涿謳в小癑ava”前綴,讓人以為它和Java有關(guān)系。實(shí)際上,它和Java是完全不同的兩種語(yǔ)言。然而,在我看來(lái),真正的原因在于大多數(shù)開(kāi)發(fā)者接觸和使用JavaScript的方式。對(duì)于其他語(yǔ)言來(lái)說(shuō),比如Python和Ruby,開(kāi)發(fā)者必須要堅(jiān)持閱讀技術(shù)文檔、視頻教程和學(xué)習(xí)指南。但是直到現(xiàn)在,使用JavaScript開(kāi)發(fā)程序也不用這樣,開(kāi)發(fā)者的需求往往是給現(xiàn)有代碼添加一個(gè)表單驗(yàn)證、彈出框或圖片輪播控件,而且工期也很緊。因此他們直接去網(wǎng)上找一段能用的代碼就可以了,而不必花時(shí)間去學(xué)習(xí)和理解這門語(yǔ)言。很多人就是這樣開(kāi)始接觸JavaScript的,并堂而皇之地把JavaScript技能寫入他們的簡(jiǎn)歷。 現(xiàn)在,JavaScript引擎和瀏覽器已經(jīng)變得非常強(qiáng)大,使用JavaScript來(lái)構(gòu)建龐大的應(yīng)用已經(jīng)屢見(jiàn)不鮮,而且越來(lái)越流行。像Gmail和Google Maps之類的產(chǎn)品給我們帶來(lái)了Web應(yīng)用全新的體驗(yàn),開(kāi)發(fā)者們頓時(shí)趨之若鶩。公司開(kāi)始雇用全職的JavaScript程序員,JavaScript也早已不再是只能完成表單驗(yàn)證的“不入流的腳本語(yǔ)言”了。現(xiàn)在憑借其自身獨(dú)特的優(yōu)勢(shì),JavaScript已經(jīng)成為一門獨(dú)立的、潛力無(wú)窮的編程語(yǔ)言。 這種趨勢(shì)說(shuō)明JavaScript應(yīng)用會(huì)如雨后春筍一般遍地開(kāi)花。不幸的是,可能是因?yàn)镴avaScript糟糕的過(guò)去,很多JavaScript應(yīng)用的架構(gòu)是非常脆弱的。某些原因是,當(dāng)使用JavaScript開(kāi)發(fā)應(yīng)用時(shí),那些經(jīng)典的設(shè)計(jì)模式和最佳實(shí)踐被拋在了腦后。開(kāi)發(fā)者往往忽略架構(gòu)模型,比如MVC模型,而常將應(yīng)用中的HTML和JavaScript混雜在一起,看著像一個(gè)大雜燴。
媒體關(guān)注與評(píng)論
本書適合從事JavaScript 開(kāi)發(fā),尋求進(jìn)階的前端開(kāi)發(fā)人員、Web 架構(gòu)師閱讀?!? “強(qiáng)烈向讀者推薦此書,它將會(huì)教你如何構(gòu)建先進(jìn)的富應(yīng)用程序,書中給出的很多優(yōu)秀的工具和最佳實(shí)踐都是很多程序員和工程師在工作中亟需的。我已經(jīng)記不起向多少人推薦過(guò)這本書了。” ——Addy Osmani 美國(guó)在線JavaScript工程師
編輯推薦
《基于MVC的JavaScript Web富應(yīng)用開(kāi)發(fā)》不是為JavaScript初學(xué)者所寫,如果你對(duì)JavaScript這門語(yǔ)言缺乏基本的了解和認(rèn)識(shí),我建議你先閱讀一些更基礎(chǔ)的書,比如Douglas Crockford著的《JavaScript: The Good Parts》?!痘贛VC的JavaScript Web富應(yīng)用開(kāi)發(fā)》更適合有一些JavaScript開(kāi)發(fā)經(jīng)驗(yàn)的開(kāi)發(fā)者,比如使用jQuery類庫(kù)的開(kāi)發(fā)者,或者當(dāng)你希望構(gòu)建更復(fù)雜、更高級(jí)的JavaScript應(yīng)用時(shí),也是適合你的。此外,《基于MVC的JavaScript Web富應(yīng)用開(kāi)發(fā)》的很多章節(jié),特別是附錄,對(duì)于有經(jīng)驗(yàn)的 JavaScript開(kāi)發(fā)者來(lái)說(shuō)也是非常有幫助的。
名人推薦
“強(qiáng)烈向讀者推薦此書,它將會(huì)教你如何構(gòu)建先進(jìn)的富應(yīng)用程序,書中給出的很多優(yōu)秀的工具和最佳實(shí)踐都是很多程序員和工程師在工作中亟需的。我已經(jīng)記不起向多少人推薦過(guò)這本書了。” ——Addy Osmani 美國(guó)在線JavaScript工程師
圖書封面
圖書標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
基于MVC的JavaScript Web富應(yīng)用開(kāi)發(fā) PDF格式下載