2015年值得關注的幾個WEB技術
HTTP2
HTTP2在今年中應該就可以定稿,這無疑是web界的一個大事。HTTP2從google的SPDY中借鑑了很多特性,重點改善了之前HTTP協議在當前的網路環境下的效能。簡單地來講,HTTP2更快。為什麼呢,有幾個主要改變:
- 首先是來自於同一個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),已經基本上快定稿了。這個版本里加入了很多開發過程中需要的一些功能,例如:
- 類定義語法,包括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,大家有興趣可以自己去找找看。
相關文章
- 認為值得重點關注的技術
- 2018前端值得關注的技術前端
- 13個值得關注的可穿戴式技術發展趨勢
- Go 1.12中值得關注的幾個變化Go
- Go 1.17中值得關注的幾個變化Go
- Go 1.16 中值得關注的幾個變化Go
- 2018最值得關注的前端技術前端
- 2017年電信業值得關注的7大顛覆性技術
- 關注******技術
- NLP接下來黃金十年-----周明等談值得關注的NLP技術
- 2020 年值得關注的十大技術趨勢
- 工業物聯網領域值得關注的五大技術
- 8個值得關注的PHP安全函式PHP函式
- 值得關注的十個優秀的CSS框架CSS框架
- Android開發者2017年最值得關注的25個庫Android
- 你值得關注的幾種常見的js設計模式JS設計模式
- 製造業技術 ─ 2021年值得關注的發展趨勢
- 開發 web 桌面類程式幾個必須關注的細節Web
- 技術架構的關注點架構
- 2015年 Web 技術風向標Web
- 7 個值得關注的開源雲原生工具
- 8個值得關注的SQL-on-Hadoop框架SQLHadoop框架
- 值得開發者關注的5個新興平臺
- C++11 中值得關注的幾大變化(詳解)C++
- 2016年有哪些值得關注的新興連線技術趨勢?
- 2017年最值得關注的設計工具
- 3 月值得關注的 15 個 JavaScript 和 CSS 庫JavaScriptCSS
- 最值得關注的10個C開源專案
- 值得關注的 10 個 Python 英文部落格Python
- 值得關注的10個python語言部落格Python
- macOS版本大升級,這幾項的細節值得你關注Mac
- 在網路通訊方面,有哪些新技術或趨勢值得關注?
- 2018 年,學習WEB前端開發應該關注哪些新技術?Web前端
- 回顧2013年十個值得關注的WordPress設計主題
- 技術硬核、體驗新穎……HarmonyOS開發者日最值得關注的點都在這裡
- CB Insights :值得關注的41家金融人工智慧技術創業公司人工智慧創業
- 2020下半年前端技術發展趨勢,值得每個前端人關注前端
- 掘金上值得關注的 iOS 開發者iOS