回顧過去,繼續前行javascript
編程技術及生態發展的三個階段 1 補全API,完善語言和底層基礎設施 2 開發語言模式,簡化工程組織,開發工具 3 MVC MVVM工程架構,自動化測試,團隊協做,達到工程化
觀念的變化html
1 如今前端開發面向更多的是Web App而不是Web Page,以致於逐漸趨同於過去的傳統模式客戶端開發,再加上一些前端獨有的特性(免安裝、Write Once Use More),前端工程更趨於複雜。
框架和類庫的變化前端
1 React + Redux + React Router + React Native(Android & iOS) 2 優勢:基於虛擬DOM,總體驅動更新。同整個生態系統很是徹底,支持強大。 3 Vue + Vuex + Vue Router + Weex(Vue Native) 4 優勢:輕量精巧,易學易用,優異的性能,組件化開發。 5 Angular2
標準&語言的變化java
ES6帶了許多革命性的新語法,具有了開發大型應用的基本要素:原生的模塊加載,引入Class類。從目前es的進化速度來看,es後面應該會變成一個個的feature發佈而不是像之前那樣大版本號的方式,因此如今官方推薦 ES+年份這種叫法而不是 ES+版本。git
2015年11月,ES標準委員會宣佈將歷時3年研究的Object.observe從草案中移除,官方的解釋是,前端變化太快,React引入的Immutable Object盛行,這讓基於可變對象變得尷尬,並且性能上還存在必定問題。github
ES2016的相關草案中值得期待的兩個Features,目前轉譯器Babel對ES2015/ES2016支持很是良好。編程
1 async/await:協程,同步的寫法寫異步 2 decorator:裝飾器
WebAssembly瀏覽器
V8中引入JIT(即時編譯,即在程序運行前一剎那,偷偷編譯)技術,JIT技術的問題:性能優化
1. JIT 基於運行期分析編譯,而 Javascript 是一個沒有類型的語言,大部分時間,JIT 編譯器實際上是在猜想 Javascript 中的類型. 2. 有不少的狀況下,JIT 編譯器都沒法生成代碼,好比異常, 好比 for in , 這個基本上是實現難度引發的.
雖然大大提高了JS性能,可是對於性能的要求老是無盡的。架構
繼續提高的思路:
1 一種是 Typescript, Dart, JSX 爲表明的,基本思想:語言是強類型的. 2 另外一種是火狐的 Asm.js 爲表明的, 作一個 javascript 子集, 同時試圖利用標註的方法,加上變量類型.
WebAssembly是一種更激進的方案,編譯過程前移(AOT),提供工具將各類語言轉換成特定的字節碼,瀏覽器直接面向字節碼編譯程序。
技術選型和架構
1 組件化:在工程上會大大提高項目的可維護性及拓展性,以及可複用性。組件化的指導策略必定是分治而不是複用,分治的目的是爲了使得組件之間解耦,而若是以複用爲指導原則,代碼將變得臃腫龐大,不易維護。 2 工程化:合理開發流程和規範,自動化檢測,系統部署,性能優化。
工具鏈的變化
構建工具 Gulp Webpack browserify
面向將來的包管理 Jspm(Http2.0已發佈)
總之,近年前端發展太快,影響了新產品的技術選型,誰也說不許,如今的最佳實踐是不是之後的反模式。前端的亂世也意味着更多的挑戰和更多的可能,但願本身迎風而上,不落潮巔,加油。
此文爲讀點擊這裏有感整理.