題主的問題能夠從新解讀爲:
- 何時應該用 Ajax
- 如何應對使用 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 (
https://zh.wikipedia.org/wiki/MVC)這樣的軟件設計模式,對複雜度的簡化,使程序結構更加直觀。 現代 Web Frameworks 都在執行這一理念。若是須要作一個 WebApp,從 React、Vue.js、Angular.js 等框架入手都是最好的選擇。 2. 使用 Ajax 優化傳統 Server Centri Web 的體驗 無非是結構化的程序設計方式,相信全部 CS 出身的開發者都能遊刃有餘。 再有就是合理使用第三方庫,例如使用 jQuery、underscore.js 這樣的工具性第三方庫能夠下降對 DOM 操做的難度,並應對瀏覽器兼容性問題。