Chrome瀏覽器已經蹦到57版本了,是名副其實的版本帝,做爲兄弟的Node.js也同樣,1.0以前等了6年,而從1.0到8.0,只用了2年時間,如今已到9以上了前端
咱們就數一下node
演進時間線大體以下:mysql
咱們能夠根據框架的特性進行分類webpack
框架名稱 | 特性 | 點評 |
---|---|---|
Express | 簡單、實用,路由中間件等五臟俱全 | 最著名的Web框架 |
Derby.js && Meteor | 同構 | 先後端都放到一塊兒,模糊了開發便捷,看上去更簡單,實際上上對開發來講要求更高 |
Sails、Total | 面向其餘語言,Ruby、PHP等 | 借鑑業界優秀實現,也是Node.js成熟的一個標誌 |
MEAN.js | 面向架構 | 相似於腳手架,又指望同構,結果只是蹭了熱點 |
Hapi和Restfy | 面向Api && 微服務 | 移動互聯網時代Api的做用被放大,故而獨立分類。尤爲是對於微服務開發更是利器 |
ThinkJS | 面向新特性 | 借鑑ThinkPHP,並慢慢走出本身的一條路,對於Async函數等新特性支持,無出其右 |
Koa | 專一於異步流程改進 | 下一代Web框架 |
自從ES 2015(俗稱ES 6)在Node.js 落地以後,整個Node.js開發都發生了翻天覆地的變化。自從0.10開始,Node.js就逐漸的加入了ES 6特性,好比0.12就可使用generator,才致使尋求異步流程控制的tj寫出了co這個著名的模塊,繼而誕生了Koa框架。可是在4.0以前,一直都是要經過flag才能開啓generator支持,故而Koa 1.0遲遲未發佈,在Node 4.0發佈才發佈的Koa 1.0。nginx
2015年,成熟的傳統,而2016年,變革開始git
核心變動:es語法支持es6
對比一下變革先後的技術棧選型,但願讀者可以從中感覺到其中的變化github
分類 | 2015年 | 2016年 | 選型緣由 |
---|---|---|---|
Web框架 | express 4.x | koa 1.0 && 2.0 (koa2.0剛發佈不久,喜歡折騰的能夠考慮) | 主要在流程控制上的便利,異步畢竟要時刻注意,心累 |
數據庫 | mongoose(mongodb) | mongoose(mongodb) | 對mongodb和mysql支持都同樣,不過是mongodb更簡單,足以應付絕大部分場景 |
異步流程控制 | bluebird(Promise/A+實現) | bluebird(Promise/A+實現)1) Koa 1.0 使用co + generator 2) Koa 2.0 使用async函數 | 流程控制演進路線,從promise到async函數,不管如何,promise都是基石,必要掌握的 |
模板引擎(視圖層) | ejs && jade | jade && nunjucks | 給出了2種,一種可讀性好,另外一種簡潔高效,都是很是好的 |
測試 | mocha | ava | mocha是Node.js裏著名的測試框架,但對新特性的支持沒有ava那麼好,而ava基於babel安裝也要大上好多 |
調試 | node-inspector | VSCode | 在Node 6和7出來以後,node-inspector支持的不是那麼好,相反VSCode可視化,簡單,文件多時也不卡,特別好用 |
MEAN是一個Javascript平臺的現代Web開發框架總稱,它是MongoDB + Express +AngularJS + NodeJS 四個框架的第一個字母組合。它與傳統LAMP同樣是一種全套開發工具的簡稱。在2014和2015年喜歡講這個,而且還有MEAN.js等框架,但今天已通過時,Node.js有了更多的應用場景。web
《Node.js in action》一書裏說,Node所針對的應用程序有一個專門的簡稱:DIRT。它表示數據密集型實時(data-intensive real-time)程序。由於Node自身在I/O上很是輕量,它善於將數據從一個管道混排或代理到另外一個管道上,這能在處理大量請求時持有不少開放的鏈接,而且只佔用一小部份內存。它的設計目標是保證響應能力,跟瀏覽器同樣。sql
這話不假,但在今天來看,DIRT仍是範圍小了。其實DIRT本質上說的I/O處理的都算,但隨着大前端的發展,Node.js已經再也不只是I/O處理相關,而是更加的「Node」!
這裏給出Node.js的若干使用場景
能夠說目前你們可以看到的、用到的軟件都有Node.js身影,當下最流行的軟件寫法也大都是基於Node.js的,好比PC客戶端luin/medis採用electron打包,寫法採用React+Redux。我本身一直的實踐的【Node全棧】,也正是基於這種趨勢而造成的。在將來,Node.js的應用場景會更加的普遍。
用途 | 說明 | 前景 |
---|---|---|
爬蟲 | 搶了很多Python的份額,總體來講簡單,實用 | 看漲 |
命令行工具 | 寫工具、提升效率,node+npm真是無出其右 | 看漲 |
微服務與RPC | Node作純後端很差作,但在新項目和微服務架構下,必有一席之地 | 看漲 |
微信公衆號開發 | 已經火了2年多了,尤爲是付費閱讀領域,還會繼續火下去,gitchat就是使用Node.js作的,並且還在招人 | 看漲 |
反向代理 | Node.js能夠做爲nginx這樣的反向代理,雖然線上咱們不多這樣作,但它確確實實能夠這樣作。好比node-http-proxy和anyproxy等,其實使用Node.js作這種請求轉發是很是簡單的 | 看漲 |
來源:http://cnodejs.org/topic/58eee565a92d341e48cfe7fc