現在使用者對網頁應用程式的要求越來越高,又要好看又要反應快。常見的做法是使用 AJAX 提升頁面反應時間,但為何要用 AJAX 呢?
早期使用 JSP 技術時,當你輸入完網頁上的表單按下送出時,你會發現畫面整個變空白,然後才出現後續的結果頁面。這就是標準的瀏覽器與網頁應用程式的互動方式,每次送出 HTTP 請求,應用程式就從伺服器送來一個完整的頁面,我們可以稱它是「以頁為單位的 (page-based)」溝通方式。而使用者必須等待完整頁面收到後才能繼續下一個動作,也就是使用者動作要跟 HTTP 請求同步 (synchronous)。
但當你使用 google 查詢時,一輸入第一個字,它就跳出一個下拉框列出推薦的相關詞,你會注意到畫面的其他部分並沒有變化,畫面也沒有變成空白,只有多了下拉框。若你繼續輸入第二、三個字,google 會根據你的輸入持續改變下拉框的推薦詞,你不用等待畫面的變化完成就可以輸入下一個字。這背後所使用的技術就是 AJAX。簡單來說就是透過 JavaScript 發出非同步的 (asynchronous) HTTP 請求到伺服器去取得部份要更新的資料後,再由 JavaScript 去更動目前頁面的部分內容。
整體來說,就是能讓使用者操作網頁應用程式時能有桌上型應用程式的體驗,大幅增進使用者體驗(UX)。或是你曾聽過單頁應用程式(single page application),也是利用同樣的技術打造而成。就現今技術而言,採用 WebSocket 也能得到同樣好處。
雖然 AJAX 能帶來更好的使用者體驗,但採用 AJAX 要克服許多技術上的障礙,首先要懂 JavaScript,並用它來操作 DOM ,這還加上瀏覽器相關的知識,若是你要畫面好看些,你還得要懂 CSS 。再來要設計一個跟伺服器溝通的模式與資料交換格式,而伺服器端也要實作相應的程式跟瀏覽器溝通。但如果你或你的同事都是 Java EE 背景的工程師,多半都不熟悉前端相關的技術,甚至也沒時間去熟悉前端技術,因為系統本身應用領域的問題(如金融、倉管等...)都解決不完了,那還有時間來弄這無關的技術呢?
使用 ZK UI 框架 就能幫你大量省去處理前端技術的煩惱。