3月
27
2007
分類:
最近更新:
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
當你不需要定時輸詢時卻這麼做。我的經驗:
- 該不該用 while 檢查 readyState。
- JavaScriptPhoto163 相冊下載工具第三版 (PHP + JavaScript 實作版本)
Yahoo YU Library 並不使用 event notice 策略,而是使用 timer 輪詢。這種策略的效能表現並不好,類似用 while 輪詢。有時當我在 FireFox 上運行第二版下載工具下載大量影像並設定同時工作數大於 10 時, FireFox 會出現嚴重的行程鎖死現象
。
Not inspecting the return results in the callback
不檢查 callback 回傳之狀態。在非同步模式下,我們必須常常提醒自己,天地不是以我為中心運轉,我要的資源不會總是剛好等著我取用。我的經驗:
- 輕忽回傳狀態其實是初次接觸非同步多工作業模式者常犯的錯誤,因為他們還慣於同步模式下的線性思考方式。相關問題在 C/C++ 多工作業編程中常有深入探討: select() - I/O Multiplexer
- Load and Execute JavaScript on Demand、Load 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。我的經驗:
- JSON速寫
透過 XML 在網路間交換資料,真的很方便。只是 XML 有時候用起來有點小題大作的感覺。有時為了傳送很少的資料,卻要用上十幾倍於實際交換資料的記憶體空間
。 - 網路服務與純 JavaScript 應用之 JSON 資料包裹解決方案、網路服務與純 JavaScript 應用之 JSON 資料包裹解決方案, Google的方式
為了讓使用者能建立純 JavaScript 應用, Google 就提供了將 GData 資料內容改用 JSON 格式包裹在 JavaScript 程式碼中的服務方式
。
Doing too much on the server
讓伺服端做太多事。我的經驗:
- 以動態網頁方式排序網頁的表格內容
只是我很懶,不想為了視覺效果去修改統計程式,更不想為了更新排序結果而要伺服端再回傳一次頁面。於是我打算以動態網頁的方式,直接用 JavaScript 對網頁上的統計表格排序
。
樂多舊網址: http://blog.roodo.com/rocksaying/archives/2917219.html