WEB前端:2015年值得關注的幾個Web技術

HTTP2 
HTTP2在今年中應該就能夠定稿,這無疑是web界的一個大事。HTTP2從google的SPDY中借鑑了不少特性,重點改善了以前HTTP協議在當前的網絡環境下的性能。簡單地來說,HTTP2更快。爲何呢,有幾個主要改變: 

javascript

  • 首先是來自於同一個domain的HTTP請求能夠共享同一個TCP鏈接了,這樣能夠很大程度上解決網絡延時帶來的性能問題。好比你有不少圖片,如今也不用sprite化了,由於反正它們會用同一個鏈接的。HTTP2的出現讓以前的不少web前端優化技術可能再也不須要了。
  • HTTP2再也不是純文本的了,而是二進制的協議了,這樣協議的解析也更簡單,而傳輸也更快。缺點是debug的時候須要費點功夫了。

HTTP2還有其餘一些特性,例如header壓縮等,你們能夠到這裏集中學習一下。或者看看這個FAQ。 

Firefox已經開始支持HTTP2,很多瀏覽器包括chrome以前就支持SPDY,估計對HTTP2的支持也會迅速開始,而nginx目前已經支持SPDY,就看何時各大主流web服務器開始支持HTTP2了。 

一個不太好的現狀就是開發人員可能得面臨HTTP2和HTTP 1.1的同時存在。若是享受HTTP2的好處,同時又能向後兼容HTTP1.1,多是從此開發人員必須長期面臨的問題了。 前端


ECMAScript6 
咱們如今用的javascript(注意,是javascript語言自己,不包含DOM等其餘東西)背後的標準是ECMA-262,也叫ECMAScript 5。它的下一個版本ECMAScript 6(簡稱es6),已經基本上快定稿了。這個版本里加入了不少開發過程當中須要的一些功能,例如: java

  • 類定義語法,包括super,繼承
  • lambda風格的函數定義,=> block level函數定義內的lexical scope的this,默認參數,rest參數等
  • destructuring, 相似於ruby裏的 [a, b, c] = [1, 2, 3],同時也適用於map和set,以及函數參數
  • symbol
  • iterator迭代器和generator,以及新的for of循環語法
  • template string,今後能夠像在ruby和shell裏同樣使用多行字符串
  • module語法,從語言層面上支持了模塊
  • 另外還有一系列新東西例如promise,proxy,unicode支持等


目前chrome和firefox已經開始逐步支持es6。不過你不用等到全部瀏覽器都開始支持es6後纔可使用它,由於目前已經有不少把es6代碼編譯成es5代碼的工具,例如babel和traceur等。有不少js的庫已經開始使用es6的各類功能了,其中包括angular 2.0。 

不少人應該在用coffeescript,es6的不少功能彌補了以前es5的缺陷,吸取了不少coffeescript的功能,也許之後咱們就能夠不用coffeescript了,除非你不喜歡大括號小括號,而喜歡python的語法。不過若是coffeescript不進行升級,估計就享受不到未來es6帶來的好處,也難以適應HTML5時代各類數值計算的需求。 

最後給你們一個比較不錯的es6學習資源,這本書寫得很細,如今仍是在線免費的。 

Immutable js and React 
React相信你們已經不陌生了,它是facebook開源的一個前端view框架,這裏之因此提到它是由於它背後的理念所帶動的一些技術。React自己雖然只是一個view框架,可是背後的virtual dom以及隨之帶來的性能優點是吸引人的地方,另外就是它採用的相似web component的封裝概念。這裏有一個比較js前端框架性能的試驗,雖然不是很準確,可是能夠做一個參考。 

React的virtual dom以及它管理前端控件數據的方法,和immutable數據結構(immuatble js, remutable)、functional programming是能夠很容易結合起來使用的。clojurescript的om框架就是一個例子。想象一下全部的狀態都是不可變的,而且統一數據存儲(flux架構例如marty),每次數據的更新均可以很容易只傳遞diff(event source模式),整個數據在前端的流動都是單向的,不只變成模型變得簡單,並且由於全部的歷史數據都沒有被實際修改過,因此undo和redo的實現也會變得很容易。 

React經過virtual dom實現了immediate模式的UI編程,低成本和快速的UI刷新也帶了人們更多啓發,而且React這種封裝方式也變得不侷限於dom view了。例如flipboard團隊基於React的封裝風格在canvas上封裝了一層UI,能夠實現精細的動畫效果,保證web版和移動版的體驗一致。facebook的React團隊最近在React會議上也發佈了一個能夠用js和React API進行原生移動開發的框架。 

React也許只是另一個web view框架,可是我喜歡它給我帶來的一些新想法,這些想法也許可讓咱們在前端開發上更容易些。 

Realtime web(實時web技術) 
如今的web對實時性要求愈來愈高,這不光是因爲如今的技術能夠更好地支持實時性,也是因爲用戶體驗的驅動。實時性不光是體如今聊天這種需求上;咱們在手機上的操做,web瀏覽器上最好可以實時體現出來,即使咱們不刷新頁面,頁面也應該可以實時獲得更新。 

前端因爲HTML5的出現對於實時需求有了更好的技術支持,例如新的WebSocket、WebRTC,long polling以及server push技術。然後端則早就出現了async IO編程技術,可以同時支持大量長鏈接。可是這些技術的進步歷來沒有中止過,這裏給你們隨便介紹幾個。 

pushpin是fanout最近開源的一個高性能實時web後端技術,不一樣於其它的技術,它是一個proxy,自己不提供API編程框架,而是和已有的web API結合起來,讓它們變成支持大量長鏈接的API。從設計概念上,它把維護大量長鏈接這個功能和實際的API業務功能分離開來,讓前一個功能經過proxy的形式來實現,所以對實際API的框架和語言沒有要求,若是要支持更多長鏈接,也能夠經過橫向擴展這個proxy來實現,而不必定要改動後端API。

sockjs,是一個websocket的模擬,在支持websocket的瀏覽器上就會使用原生websocket,而在老的瀏覽器上則提供替代技術。可是它不止是一個前端js庫,它也同時提供了後端的編程框架,目前支持的語言和框架挺多了。 

websocketd是一個有意思的東西,它能夠把任何符合接口的程序編程一個websocket後端,你甚至能夠用shell來寫API。 

不少的web框架都支持異步編程模式,於是能夠支持大量併發長鏈接。也有相似於meteor這種提供總體解決方案的,還有不少近期的firebase,你們有興趣能夠本身去找找看。python

 

原文轉自:娛樂世界www.jxlazzw.com,娛樂世界平臺www.shimanke.cn,轉載請註明出處nginx

相關文章
相關標籤/搜索