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