前端工程師的職責:1、UI重構 2、在正確的區域渲染出服務端的數據。
畢竟,我們要構建一個大的web應用,必然不是普普通通的靜態頁面構成。
下文將羅列前端工程師應該必備的同后端打交道的常用技能。
1、服務端渲染
談起服務端渲染,對於動態服務而言,這個世界上跑的大多數頁面都經過服務端的數據渲染,接口->前端賦值->模板渲染。
這些都是在服務器完成,在我們查看源碼的時候,可以看到完整的html代碼,包括每個數據值。
常用的php模板:Smarty,Blade,Mustache。
如果使用Node.js作為服務端的話: ejs,doT,jade等。
2、Ajax
服務端渲染隨着單頁面應用以及Restful接口的興起,Ajax逐漸成為目前前后端交流最為頻繁的方式。
Ajax的核心是XmlHttpRequest。我們通過對該對象的操作來進行異步的數據請求。
實際上我們接觸到最多jQuey就有很好的封裝,比如$.ajax
,$.post
等,如果用Angular的話我們可以用$http
服務,
除了這些之外,我們可以使用第三方的Ajax庫qwest等。
3、JSONP
JSONP,算作json的一種使用模式,可以解決主流瀏覽器的跨域數據訪問的問題。
$.ajax({
url:"",
dataType:"jsonp",
jsonpCallback:function(){}
})
4、comet
聊Comet我們還得說下短輪詢,由於某些特定的業務需求,比如通知,我們需要有及時的數據更新,
我們能夠想到的就是使用setInterval
每隔一定時間比如10s去獲取一次請求,從而做到一些通知更新,但是這並不一種高效的做法,這會增加服務器的請求數量。
這個時候有了另外一種概念,“反向Ajax”,由服務器進行數據推送, Comet能夠讓信息近乎實時的被推送到頁面上,非常適合要求實時性的獲取的數據的頁面。
5、SSE
6、Web Socket
HTML5 WebSocket 設計出來的目的就是要取代輪詢和 Comet 技術,使客戶端瀏覽器具備像 C/S 架構下桌面系統的實時通訊能力。
瀏覽器通過 JavaScript 向服務器發出建立 WebSocket 連接的請求,連接建立以后,客戶端和服務器端就可以通過 TCP 連接直接交換數據。
也就是我們可以使用web技術構建實時性的程序比如聊天游戲等應用。
注意:SSE和 Web Sockets 都是新的api,需要大家考慮兼容性。
7、小結
說了那么多簡單總結下,大家想明白幾點就行了,客戶端與服務端誰先主動,是否強調數據的實時性。
AJAX – 請求 → 響應 (頻繁使用)
Comet – 請求 → 掛起 → 響應 (模擬服務端推送)
Server-Sent Events – 客戶單 ← 服務端 (服務端推送)
WebSockets – 客戶端 ↔ 服務端 (未來趨勢,雙工通信)
參考文獻:
http://blog.csdn.net/bin1813/article/details/52296462
http://www.jb51.net/article/63588.htm