AJAX弊端

做者:周卓卓
連接:https://www.zhihu.com/question/20410763/answer/117742113
來源:知乎
著做權歸做者全部,轉載請聯繫做者得到受權。

題主的問題能夠從新解讀爲:
  1. 何時應該用 Ajax
  2. 如何應對使用 Ajax 技術致使的程序複雜性

何時應該用 Ajax
先看看 Ajax 和傳統 Server Centri Web 架構的區別。

Ajax本質上是一種瀏覽器端技術,從圖中能夠看出,傳統 Server Centri Web 架構的最大區別是將大量業務邏輯從服務器端移到瀏覽器。

好處是當數據發生變動時,只須要從新渲染相關的 HTML,而不須要加載整個頁面。 壞處是使用大量 Ajax 的項目與其說是B/S架構,不如說是C/S架構,天然也具有C/S架構的特色,在瀏覽器環境下,某些特色會成爲缺陷。

好比說 Ajax 要求業務邏輯必須先於數據加載,瀏覽器必須加載完相關 js 文件後才能開始加載數據,所以第一次頁面 ready 的時間會晚於傳統 Web 頁面。不過這樣的問題也有不少解決方案,例如 Application Cache 能夠將文件保存在瀏覽器裏,避免反覆加載相同的腳本和資源文件。

因此結論是: 是否應該使用 Ajax 取決於業務流程和技術棧

那怎麼斷定一個業務流程是否適合 Ajax 呢,我舉個例子 。

假如你須要在微信裏接入一個賣水果的活動,流程能夠以下設計:




如何應對使用 Ajax 技術致使的程序複雜性

澄清一點:Ajax 自己並無加劇程序複雜性。

程序變得複雜的緣由是:因爲 Ajax 要求業務邏輯被移動到瀏覽器端,所以瀏覽器端爲了應對更多業務邏輯變得複雜。

既然是問題是程序複雜性,那麼解決方案固然來自軟件工程:

1. 重瀏覽器端的 WebApp 應用,和客戶端開發同樣,善用 MVC/MVV ( )這樣的軟件設計模式,對複雜度的簡化,使程序結構更加直觀。 現代 Web Frameworks 都在執行這一理念。若是須要作一個 WebApp,從 React、Vue.js、Angular.js 等框架入手都是最好的選擇。 2. 使用 Ajax 優化傳統 Server Centri Web 的體驗 無非是結構化的程序設計方式,相信全部 CS 出身的開發者都能遊刃有餘。 再有就是合理使用第三方庫,例如使用 jQuery、underscore.js 這樣的工具性第三方庫能夠下降對 DOM 操做的難度,並應對瀏覽器兼容性問題。
相關文章
相關標籤/搜索