當前最火的web開發技術
HTML5
2014年10月29日,萬維網聯盟淚流滿面地宣布,經過幾乎8年的艱辛努力,HTML5標準規范終于最終制定完成了,并已公開發布。
HTML5提供了一些新的元素和屬性,例如nav(網站導航塊)和footer。這種標簽將有利于搜索引擎的索引整理,同時更好的幫助小屏幕裝置和視障人士使用,除此之外,還為其他瀏覽要素提供了新的功能,如audio和video標記。
HTML5還有望成為夢想中的"開放Web平臺"(Open Web Platform)的基石,如能實現可進一步推動更深入的跨平臺Web應用。
Angular
我解釋一下為什么Angular能夠這么火,它主要解決的是哪個層面的問題呢?它解決的是快速開發的問題。我們知道,有很多b/s化的產品,其本質 還是像c/s,只是把這個c做到瀏覽器里來了,這樣的一些系統,它免不了要在瀏覽器中寫大量js,然后使用某種ui框架,它的協同開發人員數量會相對較 大,代碼量也會很多,在這類系統的開發過程中,從成本的角度要解決兩個問題:
- 怎樣讓開發過程盡量快?
- 怎樣讓變更成本盡量小?
解決這兩個問題的辦法是組件化。所謂組件化,在傳統軟件領域可能會有一些成熟方案,但是拿到Web,尤其Web前端這個層面,基本沒有一種通用方 案。組件化并不僅僅要解決“控件”這個層面的問題,還需要把業務數據和邏輯也做規約,理清他們之間的關系,而Angular“碰巧”在這個方面很有幫助, 它把UI和業務邏輯隔離得干干凈凈,模塊之間使用依賴注入來維系關系,易測試,可復用,作為架構師,也可以比較容易地對整個項目有所把控。
我們看到很多人跟風學Angular,有很大一部分并未抓住其實質,而是被一些邊角優勢所吸引,因此用的過程中各種痛苦,如果能夠先認識到它的本質優點所在,并且認識到它確實適合自己的項目,一定能得心應手,左右逢源。
React
為什么很多人被React吸引呢,因為他從另外一個層面解決組件化的問題,而這種方式可能對前端來說更友好,而且還能夠在服務端解析模板。喜歡 React的人常常用它的虛擬DOM、精確更新來打擊其他框架,誠然,它在這方面做得非常好,但并未高到影響全局的程度。這是什么意思呢,它是一個主要針 對DOM組件的庫,如果用于完整的大型產品解決方案,還是有所欠缺的,它的優勢集中在上層,但其實從宏觀角度看,這一層的效率并沒有那么重要,比如說你是 一架很精巧的挖掘機,自帶各種分揀功能,但很多時候,大家是很粗暴地去挖東西,就像挖煤那樣,你在細節上有多么高效并不重要,只有在一些需要精確控制的場 景下,優勢才能發揮出來。況且,當Web Components出來之后,虛擬DOM是有很多沒法處理的問題的,而其他框架改進數據綁定的效率之后,也能夠把這方面的差距縮小很多。
Instagram的網站和FB網頁上的Messenger就是用React寫的。雖然我說的都是缺點,但它的實現方式確實別致,值得一看。
Yeoman
Yeoman是Google的團隊和外部貢獻者團隊合作開發的,他的目標是通過Grunt(一個用于開發任務自動化的命令行工具)和Bower(一個HTML、CSS、Javascript和圖片等前端資源的包管理器)的包裝為開發者創建一個易用的工作流。
Yeoman的目的不僅是要為新項目建立工作流,同時還是為了解決前端開發所面臨的諸多嚴重問題,例如零散的依賴關系。
Yeoman主要有三部分組成:yo(腳手架工具)、grunt(構建工具)、bower(包管理器)。這三個工具是分別獨立開發的,但是需要配合使用,來實現我們高效的工作流模式。
同形的JavaScript
顧名思義,會有一部分 JavaScript 是前后端公用的,從 路由(Route),模版(Template),到數據驗證(Validation),甚至是 交互狀態( 比如 一個 modal )。
在這個世界里, 你的應用和視圖層邏輯都可以在前后端運行, 這樣就依次解決上述所有問題 — 性能優化, 好的維護性, 可以被SEO,更有狀態的Web應用。
通過Node.js,一個快速的, 穩定的運行在服務器端的JavaScript, 現在我們可以夢想成真. 通過創建適當的抽象, 我們就可以在服務器端和客戶端運行我們的邏輯代碼 — 這就是“isomorphic JavaScript“的定義。
webGL
最新版chrome和firefox已經支持,可以做3d動畫了。
Flux
這是由非死book推出的前端架構理念:Flux | Application Architecture for Building User Interfaces
據稱是因為非死book覺得一般的前端MVC框架只能處理小型Web App,無法處理大型的,于是自己搞了一套架構理念。
從個人現在淺薄的認識來看,就是將Model和View之間紛雜的數據交互規整到一個dispatcher中,使得數據只能單向流動,你甚至可以在單向流動的數據中每次都傳遞一個完整的新數據,忽略掉增刪改三種類型,這樣可以進一步簡化代碼。
這樣的處理可能有人覺得那DOM每次都生成新的,再整體替換,可能在元素很大量的情況下效率太低。但是配合非死book自家的React(React自己維護了一套虛擬DOM,每次都會根據新老DOM對比的結果自動的做增刪改DOM的操作。。。)感覺瞬間就高大上了。
原文: http://www.evget.com/article/2014/11/24/21849.html