最近更新: 2007-03-27

Ajax anti-patterns 與個人經驗談

《老子》有云「不善人者善人之資」。了解不適當與錯誤的方式,也是學習中重要的一環。在程式設計的領域中亦如是,好的設計方式會 patternalization ,壞的設計方式也會。Jack D Herrington 于 Ajax and XML: Five Ajax anti-patterns 列舉了 5 種常見的 Ajax anti-patterns 。這5種確實常見,我個人也有不少經驗可與之聯繫。

Polling on a timer when you don't need to

當你不需要定時輸詢時卻這麼做。我的經驗:

  1. 該不該用 while 檢查 readyState
  2. JavaScriptPhoto163 相冊下載工具第三版 (PHP + JavaScript 實作版本)
    Yahoo YU Library 並不使用 event notice 策略,而是使用 timer 輪詢。這種策略的效能表現並不好,類似用 while 輪詢。有時當我在 FireFox 上運行第二版下載工具下載大量影像並設定同時工作數大於 10 時, FireFox 會出現嚴重的行程鎖死現象

Not inspecting the return results in the callback

不檢查 callback 回傳之狀態。在非同步模式下,我們必須常常提醒自己,天地不是以我為中心運轉,我要的資源不會總是剛好等著我取用。我的經驗:

  1. 輕忽回傳狀態其實是初次接觸非同步多工作業模式者常犯的錯誤,因為他們還慣於同步模式下的線性思考方式。相關問題在 C/C++ 多工作業編程中常有深入探討: select() - I/O Multiplexer
  2. Load and Execute JavaScript on DemandLoad and Execute JavaScript on Demand, by createElement

Passing complex XML when HTML would be better

需要 HTML 時卻傳遞一個複合的 XML 。我的經驗: 基本的事物反而常常被忽略,不要忘了 HTML/XHTML 與 XML 一樣是一份基於標籤語言的結構化文件,而 HTML 的好處在於瀏覽器可以直接呈現視覺效果。

Passing XML when you should pass JavaScript code

可以傳遞 JavaScript 程式碼時卻傳遞 XML。我的經驗:

  1. JSON速寫
    透過 XML 在網路間交換資料,真的很方便。只是 XML 有時候用起來有點小題大作的感覺。有時為了傳送很少的資料,卻要用上十幾倍於實際交換資料的記憶體空間
  2. 網路服務與純 JavaScript 應用之 JSON 資料包裹解決方案網路服務與純 JavaScript 應用之 JSON 資料包裹解決方案, Google的方式
    為了讓使用者能建立純 JavaScript 應用, Google 就提供了將 GData 資料內容改用 JSON 格式包裹在 JavaScript 程式碼中的服務方式

Doing too much on the server

讓伺服端做太多事。我的經驗:

  1. 以動態網頁方式排序網頁的表格內容
    只是我很懶,不想為了視覺效果去修改統計程式,更不想為了更新排序結果而要伺服端再回傳一次頁面。於是我打算以動態網頁的方式,直接用 JavaScript 對網頁上的統計表格排序
樂多舊網址: http://blog.roodo.com/rocksaying/archives/2917219.html