用AJAX開發智慧Web應用程式之基礎篇(轉)
一. 什麼是AJAX?
這個名字代表了非同步JavaScript+XMLHTTPRequest,並且意味著你可以在基於瀏覽器的JavaScript和伺服器之間建立套接字通訊。其實AJAX並不是一種新技術,而是已經成功地用於現代瀏覽器中的若干成功技術的可能性組合。所有的AJAX應用程式實現了一種“豐富的”UI——這是透過JavaScript操作HTML文件物件模型並且經由XMLHttpRequest實現的精確定位的資料檢索來實現的。典型的示例AJAX應用程式是Google Labs()的Google Maps和Google Suggest。這些應用程式現場監視使用者輸入並且提供實時的頁面更新。最重要的是,在使用者透過地圖導航或輸入一個查詢字串的同時,這些事件不需要重新整理頁面。
事實上,支援這些令人感到驚訝的應用的技術已經出現一段時間了,儘管它們要求複雜的技能以及使用瀏覽器的技巧。一些專利產品就提供了相似的能力——如Macromedia Flash外掛,Java Applets或.NET執行時——在達到實用上已經有一段時間了。把一種可與伺服器通話的指令碼元件引入到瀏覽器中的思想早在IE 5.0中就已經存在。Firefox和其它流行的瀏覽器也加入到瀏覽器大軍中並以一種內建物件形式支援XMLHTTPRequest。隨著跨平臺瀏覽器的出現,這些技術得到了認可並在2004年3月一家稱為Adaptive Path的公司中正式提出了AJAX。
簡而言之,由於來自於Google的支援和安裝了一點可用的瀏覽器技術,加上為了一種"更好的使用者體驗",每個人都在把客戶端技術新增到Web應用程式上。
二. AJAX與傳統應用程式的區別
一個傳統Web應用程式模型實際上是一種基本的事件——使用者被迫提交表單以實現頁面交換。也就是說,表單提交和頁面傳送無法得到保證:還有更壞的情形——使用者需要再次點選。這與AJAX截然不同-——資料跨過線路而不是完整的HTML頁面傳輸。這種資料交換是經由特定的瀏覽器物件:XMLHttpRequest實現的;再由適當的邏輯來處理每個資料請求的結果,頁面的特定區域而不是完整的頁面被更新。結果是更快的速度,更少的擁擠和更好的資訊傳送控制。
傳統型"click-refresh"Web應用程式強迫使用者中斷工作過程而等待頁面的重灌。透過引入AJAX技術,一個客戶端指令碼能夠非同步地與伺服器通話,而使用者仍能保持輸入資料。除了對使用者透明之外,這樣的非同步意味著伺服器可以有更多時間來處理請求。
傳統Web應用程式把所有的處理代理到伺服器並且強迫伺服器進行狀態管理。AJAX允許靈活劃分應用程式邏輯以及客戶和伺服器之間的狀態管理。這就消除了一種"click-refresh"依賴性並且提供更好的伺服器可伸縮性。當該狀態儲存在客戶端,你就不必跨越伺服器來維持會話或儲存/結束狀態-其使用期限是由客戶端來定義的。
三. AJAX——分散式的MVC
儘管AJAX應用程式依靠JavaScript來實現描述層,然而處理能力和知識庫仍然存在於伺服器上。此時,AJAX應用程式大量的與J2EE伺服器通訊——把資料輸入/輸出Web服務和servlets。具有基於AJAX的描述層的J2EE應用程式和標準J2EE應用程式之間的區別首先在於,MVC是透過線路分佈的。透過使用AJAX,檢視是本地的,而模型和控制器是分散式的——這使得開發者能夠靈活地決定哪些部件會是基於客戶端的。具體地說,本地檢視透過巧妙地操作HTML DOM而生成圖形;控制器區域性地處理使用者輸入並且根據開發者的判斷擴充套件到伺服器的處理——經由HTTP請求(Web服務,XML/RPC或其它)實現;模型的遠端部分是根據客戶端需要而下載的以達到實時更新客戶端頁面;並且狀態是在客戶端收集的。[@more@]
這個名字代表了非同步JavaScript+XMLHTTPRequest,並且意味著你可以在基於瀏覽器的JavaScript和伺服器之間建立套接字通訊。其實AJAX並不是一種新技術,而是已經成功地用於現代瀏覽器中的若干成功技術的可能性組合。所有的AJAX應用程式實現了一種“豐富的”UI——這是透過JavaScript操作HTML文件物件模型並且經由XMLHttpRequest實現的精確定位的資料檢索來實現的。典型的示例AJAX應用程式是Google Labs()的Google Maps和Google Suggest。這些應用程式現場監視使用者輸入並且提供實時的頁面更新。最重要的是,在使用者透過地圖導航或輸入一個查詢字串的同時,這些事件不需要重新整理頁面。
事實上,支援這些令人感到驚訝的應用的技術已經出現一段時間了,儘管它們要求複雜的技能以及使用瀏覽器的技巧。一些專利產品就提供了相似的能力——如Macromedia Flash外掛,Java Applets或.NET執行時——在達到實用上已經有一段時間了。把一種可與伺服器通話的指令碼元件引入到瀏覽器中的思想早在IE 5.0中就已經存在。Firefox和其它流行的瀏覽器也加入到瀏覽器大軍中並以一種內建物件形式支援XMLHTTPRequest。隨著跨平臺瀏覽器的出現,這些技術得到了認可並在2004年3月一家稱為Adaptive Path的公司中正式提出了AJAX。
簡而言之,由於來自於Google的支援和安裝了一點可用的瀏覽器技術,加上為了一種"更好的使用者體驗",每個人都在把客戶端技術新增到Web應用程式上。
二. AJAX與傳統應用程式的區別
一個傳統Web應用程式模型實際上是一種基本的事件——使用者被迫提交表單以實現頁面交換。也就是說,表單提交和頁面傳送無法得到保證:還有更壞的情形——使用者需要再次點選。這與AJAX截然不同-——資料跨過線路而不是完整的HTML頁面傳輸。這種資料交換是經由特定的瀏覽器物件:XMLHttpRequest實現的;再由適當的邏輯來處理每個資料請求的結果,頁面的特定區域而不是完整的頁面被更新。結果是更快的速度,更少的擁擠和更好的資訊傳送控制。
傳統型"click-refresh"Web應用程式強迫使用者中斷工作過程而等待頁面的重灌。透過引入AJAX技術,一個客戶端指令碼能夠非同步地與伺服器通話,而使用者仍能保持輸入資料。除了對使用者透明之外,這樣的非同步意味著伺服器可以有更多時間來處理請求。
傳統Web應用程式把所有的處理代理到伺服器並且強迫伺服器進行狀態管理。AJAX允許靈活劃分應用程式邏輯以及客戶和伺服器之間的狀態管理。這就消除了一種"click-refresh"依賴性並且提供更好的伺服器可伸縮性。當該狀態儲存在客戶端,你就不必跨越伺服器來維持會話或儲存/結束狀態-其使用期限是由客戶端來定義的。
三. AJAX——分散式的MVC
儘管AJAX應用程式依靠JavaScript來實現描述層,然而處理能力和知識庫仍然存在於伺服器上。此時,AJAX應用程式大量的與J2EE伺服器通訊——把資料輸入/輸出Web服務和servlets。具有基於AJAX的描述層的J2EE應用程式和標準J2EE應用程式之間的區別首先在於,MVC是透過線路分佈的。透過使用AJAX,檢視是本地的,而模型和控制器是分散式的——這使得開發者能夠靈活地決定哪些部件會是基於客戶端的。具體地說,本地檢視透過巧妙地操作HTML DOM而生成圖形;控制器區域性地處理使用者輸入並且根據開發者的判斷擴充套件到伺服器的處理——經由HTTP請求(Web服務,XML/RPC或其它)實現;模型的遠端部分是根據客戶端需要而下載的以達到實時更新客戶端頁面;並且狀態是在客戶端收集的。[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10172717/viewspace-928713/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 開發Web應用Web
- Windows應用程式基礎Windows
- (資料科學學習手札102)Python+Dash快速web應用開發——基礎概念篇資料科學PythonWeb
- [譯] Rust 開發完整的 Web 應用程式RustWeb
- [譯] Web 應用架構基礎課Web應用架構
- 資料庫篇-mysql詳解( 一 )之基礎應用資料庫MySql
- 鴻蒙系統應用基礎開發鴻蒙
- 《Flask Web開發 基於Python的Web應用開發實戰》簡評FlaskWebPython
- 應用程式基礎知識:activity和intent——Android開發祕籍IntentAndroid
- Mac基礎設定—應用程式Mac
- Go基礎學習記錄 – 編寫Web應用程 – Web開發輸入驗證(三)GoWeb
- 基於springmvc+spring-data-jpa+dubbo開發web應用SpringMVCWeb
- 用Dockerfile製作一個java應用映象,ubuntu基礎篇DockerJavaUbuntu
- 基於大模型的人工智慧應用開發大模型人工智慧
- Ajax及其應用
- Django基礎五之AjaxDjango
- 《Flask Web開發:基於Python的Web應用開發實戰》學習筆記(二)FlaskWebPython筆記
- echarts基礎應用Echarts
- shell基礎應用
- python基礎應用Python
- Sentinel基礎應用
- 漸進式web應用開發---使用indexedDB實現ajax本地資料儲存(四)WebIndex
- Golang 入門系列(十三)用Beego開發web應用GolangWeb
- Spring原始碼解析之基礎應用(二)Spring原始碼
- Spring原始碼解析之基礎應用(三)Spring原始碼
- iOS開發基礎110-Core Graphics應用場景iOS
- java web 之 網頁前端開發基礎(1)JavaWeb網頁前端
- PHP 轉 Node 筆記(二. 基礎的Web開發)PHP筆記Web
- ZooKeeper 基礎知識、部署和應用程式
- 零基礎可以搭建應用程式嗎
- Web應用程式優化Web優化
- 怎麼用 PHP 玩轉程式之一 — 基礎PHP
- 提高開發效率之VS Code基礎配置篇
- 重拾Java Web應用的基礎體系結構JavaWeb
- 葡萄城公開課—活字格Web應用生成平臺基礎分享系列Web
- web_前端開發JS框架篇-Vue基礎入門版-基礎語法Web前端JS框架Vue
- Linux應用——程序基礎Linux
- Ubuntu Server 基礎應用UbuntuServer
- 【轉】Docker部署Tomcat及Web應用DockerTomcatWeb