出版時(shí)間:2007-5 出版社:電子工業(yè)出版社 作者:Michael Mahemoff 頁數(shù):635 譯者:楊仁和
Tag標(biāo)簽:無
前言
序言 序 PREFACE 對于想要知道 Ajax 正被如何應(yīng)用到現(xiàn)實(shí)世界的開發(fā)者、設(shè)計(jì)者和經(jīng)理人,《Ajax設(shè)計(jì)模式》無疑是為他們量身打造的一份參考資料。Ajax 是一個(gè)新名詞,描述行為豐富、類似桌面應(yīng)用的 Web 應(yīng)用,這些應(yīng)用執(zhí)行在標(biāo)準(zhǔn)的Web瀏覽器上,而不需要安裝任何特別的插件。它的風(fēng)行與普及,歸功于一些眾所矚目的 Ajax 應(yīng)用,例如 Gmail、Google Maps和37signals的Basecamp。在企業(yè)應(yīng)用中,Ajax越來越受歡迎?! ”緯哪J椒殖?4 類?;A(chǔ)技術(shù)(Foundational Technology)模式概述了 Ajax 開發(fā)所需要的原始技術(shù),例如 XMLHttpRequest 對象。編程(Programming)模式探索開發(fā)者所發(fā)現(xiàn)的一些技術(shù),這些技術(shù)可以確保他們的 Ajax 應(yīng)用易于維護(hù)且性能良好。功能性和可用性(Functionality and Usability)模式討論將在Ajax應(yīng)用中遇到的,以及 Ajax 使其成為可能的用戶界面。最后,開發(fā)(Development)模式闡述了用來監(jiān)控、調(diào)試,以及測試 Ajax 應(yīng)用的過程?! ≌l該閱讀這本書 Who should Read This Book 如果想要達(dá)到以下目的,你應(yīng)該閱讀這本書: 了解 Ajax 能做什么,不能做什么,以及正如何被使用在現(xiàn)實(shí)世界里。 加速理解 Ajax 的核心技術(shù),例如XMLHttpRequest、DOM,以及JSON等?! “l(fā)現(xiàn)開發(fā)者用來產(chǎn)生高質(zhì)量的Ajax架構(gòu),改善性能,以及改善可用性的模式?! ∫?yàn)槟J奖旧砭褪怯脕韰⒖嫉?,各種背景的讀者都可以理解。想在Ajax領(lǐng)域快速提升的開發(fā)者,可以從教程的章節(jié)(第2章)及基礎(chǔ)技術(shù)模式開始。已經(jīng)有些 Ajax 開發(fā)經(jīng)驗(yàn)的人,可以從編程模式和開發(fā)模式中獲益良多。非技術(shù)領(lǐng)域的人,可以以高層的觀點(diǎn),特別是考察功能性和可用性模式以及它們在真實(shí)世界中的例子,來看看Ajax能做什么?! 榱祟I(lǐng)會(huì)書中的技術(shù)性討論與程序代碼范例,程序員應(yīng)該對網(wǎng)頁開發(fā)有一定的經(jīng)驗(yàn)—— HTML、表單提交、服務(wù)器端腳本,等等。讀者最好也了解一些 JavaScript,因?yàn)檫@本書不是來教你這門編程語言的。但是本書在寫作時(shí),作者確實(shí)考慮到了很多讀者對 JavaScript 只是基本的了解?! jax 主要是關(guān)于發(fā)生在瀏覽器里的事,因此本書假設(shè)你不知道任何特定的服務(wù)器端環(huán)境。在那些涉及服務(wù)器端代碼的地方,范例基本上都是以PHP作基礎(chǔ),并且用語言中立(language-neutral)的術(shù)語來作解釋?! ≌l不該閱讀這本書 Who should not Read This Book 如果你沒有從事過任何網(wǎng)頁開發(fā)的工作,在一頭栽進(jìn)Ajax和這些模式之前,或許應(yīng)該找些基礎(chǔ)概念的介紹來看看會(huì)更好?! jax 開發(fā)涉及大范圍的技術(shù)領(lǐng)域,包括 HTML、XML、CSS、JavaScript 和服務(wù)器端開發(fā)。這本書將幫助你理解 Ajax與這些技術(shù)的每一項(xiàng)是如何關(guān)聯(lián)的,通常是如何相結(jié)合的。但是,如果你指望徹底學(xué)習(xí)這些技術(shù)中的任何一項(xiàng),或者你正在尋求有關(guān)瀏覽器細(xì)節(jié)的參考,建議你查閱更加專業(yè)的參考資料。 關(guān)于范例 About the Examples 本書的所有范例(教程代碼與Ajax模式的代碼)都可以從http://ajaxify.com/run上下載。它們已經(jīng)被開發(fā)成與新近版本的Firefox和IE兼容的代碼,并且在Firefox 1.5和IE 6.0[注1]上通過了測試。多數(shù)服務(wù)器端代碼需要PHP 5或更新的版本,并在PHP 5.0.4上也通過了測試。PHP程序代碼應(yīng)該運(yùn)行在任何能執(zhí)行PHP腳本的標(biāo)準(zhǔn)Web服務(wù)器上;Apache 1.3.33被用于本書范例的測試。Wiki的演示需要MySQL,并且在4.1.14-max 的版本上能通過測試。關(guān)于如何安裝演示的信息,請參閱附錄B?! g覽器細(xì)節(jié) Browser Specifics 實(shí)際上對Ajax的目的來說,所有的Ajax模式都能在任何現(xiàn)代的標(biāo)準(zhǔn)瀏覽器上實(shí)現(xiàn),討論的焦點(diǎn)應(yīng)側(cè)重于一般性架構(gòu)與可用性的問題,而不是瀏覽器的細(xì)節(jié)。但是,可移植性(portability)的問題確實(shí)出現(xiàn)在了某些例子中,并且在對實(shí)現(xiàn)模式具有關(guān)鍵性影響的地方也作了說明(如同本書第二部分,基礎(chǔ)技術(shù)模式的某些主題中所做的)。為了不模糊焦點(diǎn),多數(shù)討論仍局限于IE和Firefox;描繪每個(gè)瀏覽器和版本的風(fēng)格與手法,超出了模式所要討論的范圍,對此,建議你參考更加專業(yè)的資料?! ”緯慕M織 Organization of This Book 第一部分,序曲 最初幾章是所有模式的序曲。Ajax簡介(第1章)概述了Ajax現(xiàn)象并討論當(dāng)前的趨勢。由模式引導(dǎo)的教程(第2章)是Ajax與Ajax模式的教學(xué)課程。Ajax模式背后的設(shè)計(jì)理念則在Ajax設(shè)計(jì):原則與模式(第3章)中討論,并伴隨了模式本身的介紹?! 〉诙糠?,基礎(chǔ)技術(shù)模式 基礎(chǔ)技術(shù)模式描繪了任何 Ajax 應(yīng)用的核心“建造模塊”(building blocks)。Ajax本身是一種模式,因此作為第一個(gè)模式,Ajax 應(yīng)用(第4章)扮演了所有 Ajax 模式的基礎(chǔ)。接下來幾章探討創(chuàng)建 Ajax 應(yīng)用所涉及的 3 項(xiàng)核心技術(shù)。顯示操作(第5章)討論用戶界面的重繪,Web Remoting(第6章)整理了幾種與服務(wù)器通信的做法。動(dòng)態(tài)行為(第7章)討論事件——所有衍生自用戶或定時(shí)機(jī)制的事件。最后,擴(kuò)展技術(shù)(第8章)解釋如何以非標(biāo)準(zhǔn)的技術(shù)來擴(kuò)展 Ajax 應(yīng)用?! 〉谌糠?,編程模式 編程模式聚焦于軟件的技術(shù)性質(zhì)量,特別是可維護(hù)性、穩(wěn)定性,以及效能。這部分的第1個(gè)章節(jié),即第9章,提供了幾種設(shè)計(jì) Web Service 的策略。此外,與 Web Remoting 相關(guān),瀏覽器-服務(wù)器對話(第10章)探討瀏覽器與服務(wù)器間的信息流,例如,同步技術(shù)。DOM 組裝(第11章)涵蓋幾項(xiàng)策略,處理繼服務(wù)器響應(yīng)之后的 注1:確保對所有主要的瀏覽器(例如 Safari,Opera)完全兼容會(huì)很好,特別是對于產(chǎn)品級(jí)別的系統(tǒng)而言。但是在這里,個(gè)別的演示并未特別考慮可移植性,每個(gè)演示主要是針對特定的 Ajax 概念做介紹。 DOM 組裝(DOM population)。代碼生成與重用(第12章)包含了幾個(gè)實(shí)現(xiàn)可維護(hù)性與可移植性(portability)的通用編程模式。最后,性能優(yōu)化(第13章)不僅討論了提高更新與通信的速度,也討論了為無法避免的延遲優(yōu)化用戶的體驗(yàn)。 第四部分,功能性與可用性模式 功能性和可用性模式著重于 Ajax 應(yīng)用的可用性。小組件(第14章)介紹一些被整合進(jìn)很多 Ajax 界面的小組件。頁面架構(gòu)(第15章)討論了較高層次的觀點(diǎn),其中的焦點(diǎn)是頁面布局、內(nèi)容分解,以及暴露服務(wù)器端的內(nèi)容。隨著Ajax的普及,因特網(wǎng)正經(jīng)歷一場視覺效果的提升,這對傳統(tǒng)的桌面應(yīng)用系統(tǒng)是前所未有的;最常見的視覺效果將在“視覺效果”(第16章)中描述。這個(gè)部分的最后一章,功能性(第17章)討論了Ajax使之成為可能的幾種新功能。 第五部分,開發(fā)模式 開發(fā)模式不是你在 Ajax 應(yīng)用中看到的“具體事物”——不像前面幾個(gè)部分中的模式——而是能夠用來輔助你開發(fā)的過程。診斷分析(第18章)協(xié)助進(jìn)行疑難排查(troubleshooting),以及監(jiān)測 Ajax 應(yīng)用程序的運(yùn)行狀態(tài)。測試(第19章),在各個(gè)不同的層次上協(xié)助進(jìn)行測試工作,而且是建立在隨應(yīng)用的演進(jìn)而逐步測試的敏捷實(shí)踐(agile practice)的基礎(chǔ)之上的?! 〉诹糠郑戒洝 」灿?個(gè)附錄。附錄A,最大的附錄,是一個(gè)Ajax相關(guān)框架和庫的清單,其中很多對實(shí)現(xiàn)本書中的模式大有幫助。附錄B是一組安裝代碼范例的說明。附錄C介紹模式的一般性理論。最后,附錄D列出了本書所參考的相關(guān)資料。
內(nèi)容概要
《Ajax設(shè)計(jì)模式》是一本關(guān)于復(fù)雜Ajax應(yīng)用的整體架構(gòu)設(shè)計(jì)的圖書。好的架構(gòu)設(shè)計(jì)應(yīng)該滿足KISS的原則,容易理解和學(xué)習(xí)、開發(fā)效率高、容易維護(hù)和擴(kuò)展。在各種必須要滿足的約束條件之下,設(shè)計(jì)出一個(gè)最簡化的架構(gòu)是架構(gòu)師孜孜不倦追求的目標(biāo)。幸運(yùn)的是,經(jīng)過國外高水平的Web開發(fā)專家的探索,這樣的架構(gòu)設(shè)計(jì)已經(jīng)有了一套行之有效的模式。這些模式都是圍繞著REST的思想來設(shè)計(jì)的。RIA+REST將會(huì)成為繼Web MVC之后,新一代Web應(yīng)用的首選架構(gòu)風(fēng)格?! 禔jax設(shè)計(jì)模式》是國內(nèi)出版的第一本深入探討REST架構(gòu)設(shè)計(jì)的書籍。書中的所有模式都有詳細(xì)的講解和豐富的代碼,理論聯(lián)系實(shí)踐,確實(shí)是不可多得的一本好書。
作者簡介
作者:(美國)麥赫馬夫 譯者:楊仁和
書籍目錄
序 第一部分 序曲 第1章 Ajax簡介 Ajax與可用性良好的的Web應(yīng)用 Ajax的崛起 將Web應(yīng)用Ajax化:Portal的故事 將桌面應(yīng)用Web化:Office應(yīng)用的故事 Ajax應(yīng)用的特性 Ajax技術(shù) 服務(wù)器調(diào)用之剖析 Ajax的趨勢 結(jié)論 第2章 由模式引導(dǎo)的教程 Ajax技術(shù)概述 將Web應(yīng)用Ajax化:一次一個(gè)模式 項(xiàng)目與實(shí)踐 結(jié)論 第3章 Ajax設(shè)計(jì):原則與模式 Ajax應(yīng)用應(yīng)該具備的屬性 為Ajax做設(shè)計(jì) Ajax模式概覽 剖析模式說明格式 Ajax模式的演示 結(jié)論 第二部分 基礎(chǔ)技術(shù)設(shè)計(jì)模式 第4章 Ajax應(yīng)用 Ajax應(yīng)用 第5章 顯示操作 顯示變形 頁面重新布置 第6章 Web遠(yuǎn)程通信 Web服務(wù) XMLHttpRequest調(diào)用 IFrame調(diào)用 HTTP信息流 隨需下載的JavaScript 第7章 動(dòng)態(tài)行為 用戶動(dòng)作 計(jì)劃 第8章 擴(kuò)展技術(shù) 富媒體插件 第三部分 編程模式 第9章 Web Services RESTful服務(wù) RPC服務(wù) Ajax Stub HTML信息 純文本信息 XML信息 JSON信息 第10章 瀏覽器-服務(wù)器對話 調(diào)用跟蹤 定期刷新 提交次數(shù)限制 明確提交 分布式事件 跨域代理 第11章 DOM組裝 XML數(shù)據(jù)島 瀏覽器端的XSLT 瀏覽器端模板 第12章 代碼生成與重用 服務(wù)器端代碼生成 跨瀏覽器組件 第13章 性能優(yōu)化 瀏覽器端緩存 預(yù)先獲取 推測估計(jì) 多階段下載 胖客戶端 第四部分 功能性與可用性模式 第14章 小組件 滑動(dòng)條 進(jìn)度指示器 分級(jí)下拉菜單 數(shù)據(jù)表格 富文本編輯器 輸入提示 動(dòng)態(tài)搜索 動(dòng)態(tài)命令行 動(dòng)態(tài)表單 第15章 頁面架構(gòu) 拖放 小精靈 彈出框 可改變的內(nèi)容 微連接 Portlet 狀態(tài)區(qū)域 更新控制 虛擬工作空間 第16章 視覺效果 一秒鐘聚光燈 一秒鐘變形 一秒鐘移動(dòng) 突出顯示 第17章 功能性 延遲注冊 直接登錄 防主機(jī)端保存 超時(shí)機(jī)制 心跳檢測 唯一URL 第五部分 開發(fā)模式 第18章 診斷 日志 調(diào)試 DOM查看 流量嗅探 第19章 測試 模擬服務(wù) 瀏覽器端測試 服務(wù)測試 系統(tǒng)測試 第六部分 附錄 附錄A Ajax框架和庫 附錄B 設(shè)置代碼范例 附錄C 模式和模式語言 附錄D 參考文獻(xiàn) 索引
媒體關(guān)注與評(píng)論
序言序PREFACE對于想要知道 Ajax 正被如何應(yīng)用到現(xiàn)實(shí)世界的開發(fā)者、設(shè)計(jì)者和經(jīng)理人,《Ajax設(shè)計(jì)模式》無疑是為他們量身打造的一份參考資料。Ajax 是一個(gè)新名詞,描述行為豐富、類似桌面應(yīng)用的 Web 應(yīng)用,這些應(yīng)用執(zhí)行在標(biāo)準(zhǔn)的Web瀏覽器上,而不需要安裝任何特別的插件。它的風(fēng)行與普及,歸功于一些眾所矚目的 Ajax 應(yīng)用,例如 Gmail、Google Maps和37signals的Basecamp。在企業(yè)應(yīng)用中,Ajax越來越受歡迎。本書的模式分成 4 類?;A(chǔ)技術(shù)(Foundational Technology)模式概述了 Ajax 開發(fā)所需要的原始技術(shù),例如 XMLHttpRequest 對象。編程(Programming)模式探索開發(fā)者所發(fā)現(xiàn)的一些技術(shù),這些技術(shù)可以確保他們的 Ajax 應(yīng)用易于維護(hù)且性能良好。功能性和可用性(Functionality and Usability)模式討論將在Ajax應(yīng)用中遇到的,以及 Ajax 使其成為可能的用戶界面。最后,開發(fā)(Development)模式闡述了用來監(jiān)控、調(diào)試,以及測試 Ajax 應(yīng)用的過程。 誰該閱讀這本書Who should Read This Book如果想要達(dá)到以下目的,你應(yīng)該閱讀這本書:了解 Ajax 能做什么,不能做什么,以及正如何被使用在現(xiàn)實(shí)世界里。加速理解 Ajax 的核心技術(shù),例如XMLHttpRequest、DOM,以及JSON等。發(fā)現(xiàn)開發(fā)者用來產(chǎn)生高質(zhì)量的Ajax架構(gòu),改善性能,以及改善可用性的模式。因?yàn)槟J奖旧砭褪怯脕韰⒖嫉?,各種背景的讀者都可以理解。想在Ajax領(lǐng)域快速提升的開發(fā)者,可以從教程的章節(jié)(第2章)及基礎(chǔ)技術(shù)模式開始。已經(jīng)有些 Ajax 開發(fā)經(jīng)驗(yàn)的人,可以從編程模式和開發(fā)模式中獲益良多。非技術(shù)領(lǐng)域的人,可以以高層的觀點(diǎn),特別是考察功能性和可用性模式以及它們在真實(shí)世界中的例子,來看看Ajax能做什么。 為了領(lǐng)會(huì)書中的技術(shù)性討論與程序代碼范例,程序員應(yīng)該對網(wǎng)頁開發(fā)有一定的經(jīng)驗(yàn)—— HTML、表單提交、服務(wù)器端腳本,等等。讀者最好也了解一些 JavaScript,因?yàn)檫@本書不是來教你這門編程語言的。但是本書在寫作時(shí),作者確實(shí)考慮到了很多讀者對 JavaScript 只是基本的了解。Ajax 主要是關(guān)于發(fā)生在瀏覽器里的事,因此本書假設(shè)你不知道任何特定的服務(wù)器端環(huán)境。在那些涉及服務(wù)器端代碼的地方,范例基本上都是以PHP作基礎(chǔ),并且用語言中立(language-neutral)的術(shù)語來作解釋。誰不該閱讀這本書Who should not Read This Book如果你沒有從事過任何網(wǎng)頁開發(fā)的工作,在一頭栽進(jìn)Ajax和這些模式之前,或許應(yīng)該找些基礎(chǔ)概念的介紹來看看會(huì)更好。 Ajax 開發(fā)涉及大范圍的技術(shù)領(lǐng)域,包括 HTML、XML、CSS、JavaScript 和服務(wù)器端開發(fā)。這本書將幫助你理解 Ajax與這些技術(shù)的每一項(xiàng)是如何關(guān)聯(lián)的,通常是如何相結(jié)合的。但是,如果你指望徹底學(xué)習(xí)這些技術(shù)中的任何一項(xiàng),或者你正在尋求有關(guān)瀏覽器細(xì)節(jié)的參考,建議你查閱更加專業(yè)的參考資料。 關(guān)于范例About the Examples本書的所有范例(教程代碼與Ajax模式的代碼)都可以從http://ajaxify.com/run上下載。它們已經(jīng)被開發(fā)成與新近版本的Firefox和IE兼容的代碼,并且在Firefox 1.5和IE 6.0[注1]上通過了測試。多數(shù)服務(wù)器端代碼需要PHP 5或更新的版本,并在PHP 5.0.4上也通過了測試。PHP程序代碼應(yīng)該運(yùn)行在任何能執(zhí)行PHP腳本的標(biāo)準(zhǔn)Web服務(wù)器上;Apache 1.3.33被用于本書范例的測試。Wiki的演示需要MySQL,并且在4.1.14-max 的版本上能通過測試。關(guān)于如何安裝演示的信息,請參閱附錄B。瀏覽器細(xì)節(jié)Browser Specifics實(shí)際上對Ajax的目的來說,所有的Ajax模式都能在任何現(xiàn)代的標(biāo)準(zhǔn)瀏覽器上實(shí)現(xiàn),討論的焦點(diǎn)應(yīng)側(cè)重于一般性架構(gòu)與可用性的問題,而不是瀏覽器的細(xì)節(jié)。但是,可移植性(portability)的問題確實(shí)出現(xiàn)在了某些例子中,并且在對實(shí)現(xiàn)模式具有關(guān)鍵性影響的地方也作了說明(如同本書第二部分,基礎(chǔ)技術(shù)模式的某些主題中所做的)。為了不模糊焦點(diǎn),多數(shù)討論仍局限于IE和Firefox;描繪每個(gè)瀏覽器和版本的風(fēng)格與手法,超出了模式所要討論的范圍,對此,建議你參考更加專業(yè)的資料。 本書的組織Organization of This Book第一部分,序曲最初幾章是所有模式的序曲。Ajax簡介(第1章)概述了Ajax現(xiàn)象并討論當(dāng)前的趨勢。由模式引導(dǎo)的教程(第2章)是Ajax與Ajax模式的教學(xué)課程。Ajax模式背后的設(shè)計(jì)理念則在Ajax設(shè)計(jì):原則與模式(第3章)中討論,并伴隨了模式本身的介紹。第二部分,基礎(chǔ)技術(shù)模式基礎(chǔ)技術(shù)模式描繪了任何 Ajax 應(yīng)用的核心“建造模塊”(building blocks)。Ajax本身是一種模式,因此作為第一個(gè)模式,Ajax 應(yīng)用(第4章)扮演了所有 Ajax 模式的基礎(chǔ)。接下來幾章探討創(chuàng)建 Ajax 應(yīng)用所涉及的 3 項(xiàng)核心技術(shù)。顯示操作(第5章)討論用戶界面的重繪,Web Remoting(第6章)整理了幾種與服務(wù)器通信的做法。動(dòng)態(tài)行為(第7章)討論事件——所有衍生自用戶或定時(shí)機(jī)制的事件。最后,擴(kuò)展技術(shù)(第8章)解釋如何以非標(biāo)準(zhǔn)的技術(shù)來擴(kuò)展 Ajax 應(yīng)用。 第三部分,編程模式編程模式聚焦于軟件的技術(shù)性質(zhì)量,特別是可維護(hù)性、穩(wěn)定性,以及效能。這部分的第1個(gè)章節(jié),即第9章,提供了幾種設(shè)計(jì) Web Service 的策略。此外,與 Web Remoting 相關(guān),瀏覽器-服務(wù)器對話(第10章)探討瀏覽器與服務(wù)器間的信息流,例如,同步技術(shù)。DOM 組裝(第11章)涵蓋幾項(xiàng)策略,處理繼服務(wù)器響應(yīng)之后的注1:確保對所有主要的瀏覽器(例如 Safari,Opera)完全兼容會(huì)很好,特別是對于產(chǎn)品級(jí)別的系統(tǒng)而言。但是在這里,個(gè)別的演示并未特別考慮可移植性,每個(gè)演示主要是針對特定的 Ajax 概念做介紹。 DOM 組裝(DOM population)。代碼生成與重用(第12章)包含了幾個(gè)實(shí)現(xiàn)可維護(hù)性與可移植性(portability)的通用編程模式。最后,性能優(yōu)化(第13章)不僅討論了提高更新與通信的速度,也討論了為無法避免的延遲優(yōu)化用戶的體驗(yàn)。第四部分,功能性與可用性模式功能性和可用性模式著重于 Ajax 應(yīng)用的可用性。小組件(第14章)介紹一些被整合進(jìn)很多 Ajax 界面的小組件。頁面架構(gòu)(第15章)討論了較高層次的觀點(diǎn),其中的焦點(diǎn)是頁面布局、內(nèi)容分解,以及暴露服務(wù)器端的內(nèi)容。隨著Ajax的普及,因特網(wǎng)正經(jīng)歷一場視覺效果的提升,這對傳統(tǒng)的桌面應(yīng)用系統(tǒng)是前所未有的;最常見的視覺效果將在“視覺效果”(第16章)中描述。這個(gè)部分的最后一章,功能性(第17章)討論了Ajax使之成為可能的幾種新功能。第五部分,開發(fā)模式開發(fā)模式不是你在 Ajax 應(yīng)用中看到的“具體事物”——不像前面幾個(gè)部分中的模式——而是能夠用來輔助你開發(fā)的過程。診斷分析(第18章)協(xié)助進(jìn)行疑難排查(troubleshooting),以及監(jiān)測 Ajax 應(yīng)用程序的運(yùn)行狀態(tài)。測試(第19章),在各個(gè)不同的層次上協(xié)助進(jìn)行測試工作,而且是建立在隨應(yīng)用的演進(jìn)而逐步測試的敏捷實(shí)踐(agile practice)的基礎(chǔ)之上的。 第六部分,附錄共有4個(gè)附錄。附錄A,最大的附錄,是一個(gè)Ajax相關(guān)框架和庫的清單,其中很多對實(shí)現(xiàn)本書中的模式大有幫助。附錄B是一組安裝代碼范例的說明。附錄C介紹模式的一般性理論。最后,附錄D列出了本書所參考的相關(guān)資料。本書的格式約定Conventions Used in This Book斜體 用來表示模式名稱。等寬字體用來表示程序范例或片段。等寬粗體用來表示重要的代碼?!盀g覽器”這個(gè)詞,是瀏覽器端整個(gè)系統(tǒng)的簡化表示——不只是瀏覽器應(yīng)用(例如 Firefox),還包括運(yùn)行在上面的Web應(yīng)用(例如 Google Maps)。當(dāng)特指瀏覽器應(yīng)用時(shí),通常會(huì)把它稱為“Web瀏覽器”——無論如何,從上下文來看,這是相當(dāng)明顯的。同樣地,“服務(wù)器”或“服務(wù)器端”指的是服務(wù)器上的所有東西——操作系統(tǒng)(例如Linux),Web服務(wù)器(例如Apache),以及運(yùn)行在上面的特定于應(yīng)用的腳本。 “ECMAScript”和“JScript”這兩個(gè)詞并未出現(xiàn)在本書中,“JavaScript”被用來涵蓋這些名稱?!邦悺边@個(gè)詞,被用來描述以類似面向?qū)ο笙到y(tǒng)中類的方式使用的 JavaScript 函數(shù)。 出現(xiàn)在每個(gè)模式里的第一個(gè)圖形,是該模式的圖解。本書所使用的公共首字母縮略詞如下所示:CSS:層疊式樣式表(Cascading Style Sheets)。DHTML:動(dòng)態(tài) HTML(Dynamic HTML)。DOM:文檔對象模型(Document Object Model)。HTML:超文本標(biāo)記語言(Hypertext Markup Language)。IE:微軟 Internet Explorer 。XML:可擴(kuò)展標(biāo)記語言(eXtensible Markup Language)。代碼范例的格式約定Conventions in Code Examples設(shè)計(jì)圖解基于統(tǒng)一建模語言(UML)表示法,但在多數(shù)情況下,這并不是很正式。在代碼范例中,.phtml后綴用于輸出 HTML 的 PHP 文件;所有其他的 PHP 文件(例如商業(yè)邏輯模塊)則以 .php 結(jié)尾。如第2章所述,$()是document.getElementById()的別名,用來減少代碼的凌亂程度(受prototype庫啟發(fā)——見http://prototype.conio.net/)。為清晰起見,某些代碼范例重新進(jìn)行了格式化。聯(lián)系我們How to Contact Us我們已盡力核驗(yàn)本書所提供的信息,盡管如此,仍不能保證本書完全沒有瑕疵,而網(wǎng)絡(luò)世界的變化之快,也使得本書永不過時(shí)的保證成為不可能。如果讀者發(fā)現(xiàn)本書內(nèi)容上的錯(cuò)誤,不管是贅字、錯(cuò)字、語意不清,甚至是技術(shù)錯(cuò)誤,我們都竭誠虛心接受讀者指教。如果您有任何問題,請按照以下的聯(lián)系方式與我們聯(lián)系。奧萊理軟件(北京)有限公司北京市 海淀區(qū) 知春路49號(hào) 希格瑪公寓B座809室郵政編碼:100080網(wǎng)頁:http://www.oreilly.com.cnE-mail:info@mail.oreilly.com.cn與本書有關(guān)的在線信息(包括勘誤、范例程序、相關(guān)鏈接)如下所示。http://www.oreilly.com/catalog/ajaxdp/(原書)http://www.oreilly.com.cn/book.php?bn=978-7-121-03995-9(中文版)博文視點(diǎn)資訊有限公司(武漢分部)湖北省 武漢市 洪山區(qū) 郵科院路特1號(hào) 湖北信息產(chǎn)業(yè)科技大廈1406室郵政編碼:430074電話:(027)87690813 傳真:(027)87690813轉(zhuǎn)817讀者服務(wù)網(wǎng)頁:http://bv.csdn.netE-mail:sheguang@broadview.com.cn(讀者信箱)broadvieweditor@gmail.com(投稿信箱)致謝Acknowledgments在線撰寫這本書意味著:在整個(gè)過程中,我接收到了很多很棒的反饋,因此有很多應(yīng)該感謝的人。但換句話說,我很有可能遺漏了某些人!如果情況真是如此,請來信告知,我會(huì)加以改正。 我的編輯,Simon St.Laurent,總是對我的疑問迅速做出響應(yīng),并且以一種不尋常的方式將一本寫作中的書處理得很棒。也感謝本書的校稿人Mary Brady巨細(xì)靡遺的工作,以及插畫家 Rob Romano,感謝他的協(xié)助,讓本書的內(nèi)容一目了然。也要感謝歐萊禮接受Ajax Patterns 這個(gè)網(wǎng)站,特別是讓我在線寫作這本書,還有內(nèi)容毫無限制的博客與播客。這本書從Ajax Patterns(http://softwareas.com/ajax-patterns)上的博客中成長,Thomas Baekdal擁有Ajax可用性原則的洞察力,啟發(fā)了最初發(fā)表的幾個(gè)模式(http://www.baekdal.關(guān)com/articles/Usability/XMLHttpRequest-guidelines)。也要謝謝Brent Ashley,感謝他在最初的Ajax會(huì)議以及他的博客里關(guān)于模式的討論,很明顯地,這引發(fā)了對于這個(gè)項(xiàng)目的在線工作的最初關(guān)注。這本書的想法也要大大歸功于Jesse-James Garrett和他的Ajax文章,沒有這些文章,就沒有這本書。本書所有的審閱者,在整個(gè)寫作過程中,對在線版本提供了很多有價(jià)值的反饋,對于本書的草稿版本,更提供了許多巨細(xì)靡遺的意見。這些審閱者是:Cameron Shorter和Kevin Vinsen(ADI Limited,Mapbuilder),還有他們的雇主,ADI公司,給予他們兩人審閱本書的時(shí)間;Jep Castelein(Backbase)、Daniel Czarnecki(Zoltak Consulting)、Tony Hill(Thomson Corporation),以及 Alex Kirk(Blummy.com,WizLite.com)。另外,深深感謝位于Urbana-Champaign的Illinois大學(xué)的Software Architecture Group(SAG)的成員,感謝他們主導(dǎo)一些關(guān)于模式的內(nèi)容豐富的討論,并將討論內(nèi)容的聲音文件公開在網(wǎng)絡(luò)上(http://www.softwareas.com/sag-ajax-patterns-review-1)——這些寶貴的意見最后都融入到了本書的內(nèi)容里。領(lǐng)導(dǎo)這個(gè)團(tuán)體的Ralph Johnson,推薦Ajax Patterns作為討論的對象,還有Brian Foote,在整個(gè)過程中他讓我獲得最新的信息。我也感激加入 AjaxPatterns.org Wiki 公共部分的每個(gè)人,他們通過電子郵件、博客,以及 Wiki 上的討論,提供對本書在線草稿的反饋。因?yàn)槟J绞菑暮芏喱F(xiàn)有應(yīng)用中發(fā)現(xiàn)的,我想感謝所有這些范例的創(chuàng)造者,他們是真正的先鋒。由衷感謝對我解釋他們的設(shè)計(jì)思想的那些人:Kevin Arthur(Stream)、Richard Cowin 與 Bill Scott(OpenRico)、Donovan Preston(LivePage)、Jeremy Ruston(TiddlyWiki),以及 Tino“Crisp”Zijdel(DHTML Lemmings)。這些模式也是基于很多文章、范例代碼、想法、概念證明,以及直接的建議的。很多模式之所以會(huì)出現(xiàn)在書中,特別是因?yàn)橄铝凶髡吆烷_發(fā)者(也會(huì)在個(gè)別的模式描述中提及)所有的貢獻(xiàn):Julien Couvreur、James Dam、Abe Fettig(Twisted、Jotspot)、Chris Justus、Christopher Kruslicky、Alex Russell(Dojo、Jotspot)、Richard Schwartz、Mike Stenhouse、Joel Webber,以及Chris Were。另外,有幾個(gè)以新聞為焦點(diǎn)的服務(wù),使得當(dāng)相關(guān)內(nèi)容出現(xiàn)時(shí),尋找到這些內(nèi)容變得容易得多(也幫助別人找到了AjaxPatterns.org?。?。這些資源有:Niner Niner 的 AjaxBlog.com、Chris Cornutt的AjaxDeveloper.org(Chris目前在Ajaxian.com)、Ajaxian. com的Dion Almaer、Ben Galbraith與Rob Sanheim、Shane Witbeck的 AjaxMatters.com、Mike Papageorge的FiftyFourEleven.com、Brian Benzinger 的 SolutionWatch.com,以及 Mike Arrington 的 Techcrunch.com。 最后,但并不是最不重要的,滿懷的感激要獻(xiàn)給我的家人,感謝他們在我的整個(gè)寫作過程中的支持。審校者序傳統(tǒng)的DHTML技術(shù)與XMLHttpRequest、IFrame等Web Remoting技術(shù)相結(jié)合之后,得到了服務(wù)器端強(qiáng)有力的支持,這使得DHTML技術(shù)如同插上了騰飛的翅膀,并孕育出了一種被稱作Ajax的新技術(shù)。自從Ajax技術(shù)出現(xiàn)之后,對于其本質(zhì)和如何以最有效的方式來使用它的研究一直在持續(xù)進(jìn)行著,其目的是使Web應(yīng)用獲得在可用性、用戶體驗(yàn)和開發(fā)效率等方面的最大利益。這一切的研究都是建立在現(xiàn)有實(shí)踐的基礎(chǔ)之上的。實(shí)踐總是遠(yuǎn)遠(yuǎn)走在理論的前面,這是廣大富有創(chuàng)造性、勇于開拓的Web開發(fā)者的功勞?;ヂ?lián)網(wǎng)經(jīng)濟(jì)的復(fù)蘇造就了Web 2.0的神話,Web 2.0則促進(jìn)了Ajax技術(shù)的發(fā)展。在Web 2.0網(wǎng)站中,對于Web應(yīng)用的交互設(shè)計(jì)提出了各種苛刻的要求,這促使Web開發(fā)者不斷去探索新的未知領(lǐng)域,探索基于Web標(biāo)準(zhǔn)的技術(shù)所能達(dá)到的極限。Web開發(fā)中新的需求層出不窮,這為他們發(fā)揮自己的創(chuàng)意、實(shí)現(xiàn)自己的夢想創(chuàng)造了廣闊的舞臺(tái)。今天,瀏覽器中的JavaScript通過SVG、Canvas等技術(shù)獲得了全面的繪圖能力,可以用來繪制圖表和開發(fā)視頻游戲。瀏覽器的最新發(fā)展還為JavaScript腳本提供了更大的本地存儲(chǔ)空間,遠(yuǎn)遠(yuǎn)超出了Cookie的4KB數(shù)據(jù)量的限制。這非常有利于開發(fā)復(fù)雜的Ajax應(yīng)用(例如online的字處理器),這些應(yīng)用需要在客戶端保存大量的狀態(tài)。Ajax應(yīng)用可以得到Flash的協(xié)助,可以通過Flash的能力來播放多媒體內(nèi)容。Ajax應(yīng)用還可以通過HTTP信息流(另外一個(gè)名稱叫做Comet)的方式與服務(wù)器通信,在獲得了更好的實(shí)時(shí)性的同時(shí),也消耗了更少的網(wǎng)絡(luò)流量和服務(wù)器端資源。通過這種方式可以實(shí)現(xiàn)信息的實(shí)時(shí)推送,這種技術(shù)可以被應(yīng)用在股票信息實(shí)時(shí)發(fā)布和即時(shí)通信等廣泛的領(lǐng)域中。今天的Web開發(fā)與3年前相比已經(jīng)有了非常大的不同,新的事物仍在不斷涌現(xiàn)。如果有一個(gè)見多識(shí)廣、富有洞察力的人將這些技術(shù)系統(tǒng)地整理起來,對廣大Web開發(fā)者開闊眼界,提高技能會(huì)有非常大的幫助?!禔jax設(shè)計(jì)模式》這本書恰逢其時(shí),剛好填補(bǔ)了這樣一個(gè)巨大的空缺。在書中,作者M(jìn)ichael Mahemoff以最廣闊的視野,最大努力,將當(dāng) 今已經(jīng)出現(xiàn)在Web上的各種基于Ajax的開發(fā)技術(shù)進(jìn)行了一個(gè)全景式的展示,系統(tǒng)地將這些技術(shù)以模式的形式加以整理和編目,并輔以精心設(shè)計(jì)的代碼。本書是對于Ajax技術(shù)成型近兩年以來所取得成果的一個(gè)全面總結(jié)。所有的Web開發(fā)者都可以從本書中受益,學(xué)習(xí)書中所列出的眾多的開發(fā)技術(shù)和開發(fā)套路,并盡快將這些優(yōu)秀的技術(shù)應(yīng)用在自己的項(xiàng)目中。古龍的《多情劍客無情劍》(又名《小李飛刀》)是大家熟悉的武俠小說。其中有一個(gè)人叫做百曉生,這個(gè)人似乎無所不知無所不曉。他編寫了一個(gè)兵器譜,對于江湖中最厲害的兵器進(jìn)行了排序。小李飛刀排名第三,因此李尋歡又被稱做小李探花?!禔jax設(shè)計(jì)模式》的作者就是Ajax世界中的百曉生。他是著名的Ajax站點(diǎn)AjaxPatterns網(wǎng)站的站長,本書的內(nèi)容是以在AjaxPatterns網(wǎng)站建立一年半以來所開展的討論為基礎(chǔ)的。自從GoF的《設(shè)計(jì)模式》一書出版后,將各個(gè)技術(shù)領(lǐng)域中行之有效的一些通用的解決方案總結(jié)為模式,成了一種對于該領(lǐng)域進(jìn)行研究的最有效的方法。一個(gè)技術(shù)領(lǐng)域出現(xiàn)了大量的模式,說明對于這個(gè)領(lǐng)域的研究已經(jīng)進(jìn)入了高級(jí)階段,這個(gè)領(lǐng)域的技術(shù)已經(jīng)發(fā)展成熟?,F(xiàn)在,對于Ajax領(lǐng)域的研究也進(jìn)入了這樣的一個(gè)高級(jí)階段。不過Ajax技術(shù)距離完全成熟還很遠(yuǎn),在近幾年之內(nèi)仍然會(huì)取得迅速的發(fā)展。Martin Fowler在面向?qū)ο蠓治龊驮O(shè)計(jì)(OOAD)領(lǐng)域做出了開創(chuàng)性的杰出貢獻(xiàn),Michael Mahemoff對于Ajax領(lǐng)域也做出了類似的貢獻(xiàn)。也許無法相提并論,但是他使得對于Ajax技術(shù)的研究納入了理論化、系統(tǒng)化的快車道,非常有助于將來對于Ajax技術(shù)進(jìn)行更加深入的研究?;赪eb標(biāo)準(zhǔn)的開發(fā)技術(shù)仍然會(huì)統(tǒng)治互聯(lián)網(wǎng),主要原因有兩個(gè):1. 基于這些技術(shù)可以提供目前Web應(yīng)用可獲得的、最好的可用性。國外對于Web可用性的研究已經(jīng)有很多年,得到了很多行之有效的設(shè)計(jì)原則和最佳實(shí)踐。W3C對于提高Web應(yīng)用的可用性也非常重視,在上世紀(jì)90年代就建立了Web Accessibility Initiative(WAI,http://www.w3.org/WAI/GL/)。美國在Web應(yīng)用的可用性方面還有相關(guān)的立法(http://www.section508.gov/)。ISO也正在制訂Web可用性方面的標(biāo)準(zhǔn)(http://www.userfocus.co.uk/articles/ISO23973.html)。 所以,Web應(yīng)用要達(dá)到很高的可用性,目前唯一的選擇就是基于Web標(biāo)準(zhǔn)的技術(shù)。如果把這些研究成果和最佳實(shí)踐統(tǒng)統(tǒng)扔掉,改用其他的RIA技術(shù),都會(huì)影響Web應(yīng)用的可用性。可用性與界面的華麗是兩個(gè)不同的問題。2. 這些技術(shù)對于搜索引擎是最友好的,便于進(jìn)行搜索引擎優(yōu)化。假設(shè)我在網(wǎng)絡(luò)上從事電子商務(wù)。如果采用Web標(biāo)準(zhǔn)之外的技術(shù),很可能會(huì)嚴(yán)重影響我的網(wǎng)站對于搜索引擎的可視性(visibility),這會(huì)嚴(yán)重影響我的業(yè)務(wù)。因?yàn)槟壳敖^大多數(shù)通用的搜索引擎都是圍繞基于Web標(biāo)準(zhǔn)的技術(shù)而設(shè)計(jì)的,它們搜索HTML內(nèi)容最為有效,如果是Flash內(nèi)容或者其他內(nèi)容,很有可能無法被搜索到。所以我判斷基于Web標(biāo)準(zhǔn)的技術(shù)仍然會(huì)統(tǒng)治互聯(lián)網(wǎng)(Internet)。而其他的RIA技術(shù)呢, 主要將占據(jù)企業(yè)內(nèi)部應(yīng)用(Intranet)的市場。Ajax技術(shù)將來的發(fā)展趨勢我預(yù)測會(huì)有這些:1. 各種Ajax組件庫和框架逐漸成熟,提供了更多功能豐富的組件。使用這些組件做開發(fā)可以改善Web應(yīng)用的可用性,并且可以大幅提高開發(fā)效率。2. 各種Ajax組件庫和框架會(huì)逐漸融合,并且改善它們之間的互操作性。3. JavaScript 2.0推出并且逐漸被廣泛采用。其所提供的新功能對于基于JavaScript的大規(guī)模組件化開發(fā)非常有價(jià)值。4. Ajax開發(fā)工具逐漸成熟,出現(xiàn)功能全面的IDE,支持JavaScript的代碼補(bǔ)全、重構(gòu)、調(diào)試、單元測試、部署等功能。5. 瀏覽器本身也有可能會(huì)實(shí)現(xiàn)一些將來被廣泛應(yīng)用的Ajax組件,例如Tree、DataGrid等。作為《Ajax設(shè)計(jì)模式》一書的審校者,我有幸先于國內(nèi)的讀者讀到本書的內(nèi)容。我的感覺就像是在森林深處發(fā)現(xiàn)了一個(gè)巨大的寶藏,阿里巴巴初次見到寶藏的那種感覺。我原先所理解的Ajax技術(shù)所能達(dá)到的范圍一下子被拓寬了很多倍。書中大量有趣的技術(shù),就像是一件件閃著璀璨亮光的珍寶,我都想盡快去嘗試一番,感覺我似乎一下子變成了一個(gè)富翁?!禔jax設(shè)計(jì)模式》一書是Ajax開發(fā)者的百寶箱,我們懷著虔誠的心情,將本書奉獻(xiàn)給國內(nèi)的Web開發(fā)者。希望讀者在閱讀本書的過程中能夠獲得與我們相同的體驗(yàn),享受到巨大的快樂。Web開發(fā)并不是一場苦功,而是一件很快樂的事情,讓我們與國外的Web開發(fā)專家一道,盡力使它變得更加有趣。本書由ajaxcn.org負(fù)責(zé)審校。李錕負(fù)責(zé)審校第1~5、10、11章和正式章節(jié)之外的所有文字,包一磊負(fù)責(zé)第8~10章,俞黎敏負(fù)責(zé)第13~17章,張祖良負(fù)責(zé)第6、7、18、19章。由于能力有限,難免會(huì)出現(xiàn)一些錯(cuò)誤,敬請讀者指正,我們一定會(huì)在后續(xù)的印刷中盡快改正。 李 錕2007年元宵節(jié) 于上海
編輯推薦
Ajax, 即異步JavaScript與XML,目前是網(wǎng)絡(luò)開發(fā)人員中最熱門的編程技術(shù)之一。Ajax綜合了大量技術(shù),通過在瀏覽器中使用JavaScript來處理網(wǎng)絡(luò)服務(wù)的響應(yīng),為創(chuàng)建基于XML或者JSON網(wǎng)絡(luò)服務(wù)的交互式網(wǎng)絡(luò)應(yīng)用程序提供了堅(jiān)實(shí)的基礎(chǔ)?! 禔jax設(shè)計(jì)模式》為你展示了一些最佳實(shí)踐方法,這些方法能夠迅速提升你的網(wǎng)絡(luò)應(yīng)用程序開發(fā)項(xiàng)目。這《Ajax設(shè)計(jì)模式》分析了其他人如何成功地處理各種相互矛盾的設(shè)計(jì)原則,并將有用的信息直接傳遞給你?! 禔jax設(shè)計(jì)模式》中描述的模式分為以下4種類別: 基本技術(shù):檢閱Ajax開發(fā)所必需的原始技術(shù); 編程:揭示開發(fā)者所發(fā)現(xiàn)的、可以保證他們的Ajax應(yīng)用易于維護(hù)的技術(shù);功能和可用性:描述在Ajax應(yīng)用中將會(huì)是到的用戶界面的類型,以及Ajax技術(shù)使其成為可新的新功能;開發(fā):解釋用于監(jiān)控、調(diào)試和測試Ajax應(yīng)用的開發(fā)過程?! 禔jax設(shè)計(jì)模式》將使你對核心的的Ajax技術(shù)了如指掌,例如XMLHttpRequest、DOM、JSON等。緊隨在技術(shù)討論之后的是實(shí)例,這樣你就能看到對于Ajax,什么是可能的,什么是不可能的。這個(gè)便捷的參考將會(huì)幫助你制造出高品質(zhì)的Ajax架構(gòu),使得Web應(yīng)用性能流暢,并且改善用戶的體驗(yàn)。 Michael Mahemoff在墨爾本大學(xué)獲得了計(jì)算機(jī)科學(xué)和軟件工程的哲學(xué)博士(Ph.D)學(xué)位,他的論文是“軟件工程中的設(shè)計(jì)重用和人機(jī)交互”。他居住在倫敦,為銀行、衛(wèi)生保健、后勤等行業(yè)做軟件開發(fā)問題的技術(shù)咨詢。 AJAX三劍客之模式之劍,全景展現(xiàn)Ajax技術(shù)結(jié)晶,全面總結(jié)Web2.0開發(fā)利劍。
圖書封面
圖書標(biāo)簽Tags
無
評(píng)論、評(píng)分、閱讀與下載