單頁應用簡介 -- Single Page Application
單頁應用 (Single Page Application)這個名詞是在 2005 年由 Steve Yen 所提出的,
傳統上網站的設計,都是依賴『瀏覽器透過傳送新連結給伺服器,然後伺服器送回新的一頁給瀏覽器的方式』進行互動的。
但是,這種方式耗費了太多時間在完全刷新網頁上,以至於通常速度會比較慢,而且使用者的互動體驗會比較差。
為了改站顯示速度與使用體驗,現在越來越多的網站開始採用『單頁應用』的設計方式,這種設計方式通常會透過 AJAX 或 web socket 對伺服器提出請求,然後在取得資料後立刻用 javascript 將內容呈現在網頁內,於是瀏覽器在不需要換頁的情況之下,就可以順利更新內容,於是只要一個網頁載入之後,通常就不需要再換頁了。
舉例而言,像是 『google 地圖』就是單頁應用的一個明顯範例,因為地圖資料是逐漸下載呈現的,所以不能夠常常換頁,否則已經下載完的內容就會被廢棄而需重新下載了,因此不得不採用單頁應用的技術。
另外像程式人常用的 github 網站也是採用單頁應用的設計方式,因此您很少看到在 github 當中會把整個畫面全部換掉的情況,所以 github 的畫面通常相當流暢。
還有,本期焦點中的 wikidown 維基網誌系統,也是採用單頁應用的設計方式,因此除非您點選了其他網站的連結,否則基本上是不會離開 wikidown.html 這個網頁的。
最近很多 javascript 的網頁設計框架都開始納入了單頁應用的設計理念,像是 AngularJS, Ember.js, ExtJS 和 ReactJS 等等,都非常適合用來發展單頁應用。相信這些框架的出現,會帶來新一波的單頁應用大爆發,而我們應該也會看到更多的網站開始改採單頁應用的設計模式,或許 2015年會成為『單頁應用爆發年』也說不定。
如果網頁能夠運作得像 APP 一樣那麼地流暢,那麼用 HTML5 開發出各種平台都能使用的『網頁式應用』也就越來越有可能了,而這個目標也正是 HTML5 當中之所以提出 pushState, localStorage, canvas, webGL 等技術的原因之一,相信關注 web 技術新進展的人們,應該會仔細緊盯單頁應用技術的發展才對。
參考文獻
編輯: 陳鍾誠 email: ccckmit@gmail.com