Node.js是一個基於Chrome JavaScript運行時創建的平臺, 用於方便地搭建響應速度快、易於擴展的網絡應用。Node.js 使用事件驅動, 非阻塞I/O 模型而得以輕量和高效,很是適合在分佈式設備上運行數據密集型的實時應用。前端
因爲JavaScript的緣故,人們經常對Node.js產生很多的誤解,如:node
確定是前端搞出來的東西 又是一門新的語言? 是否是JavaScript框架? 會不會效率很慢?
固然,這些問題的答案都是否。既然它如此的強大,那麼接下來就讓咱們一塊兒來了解了解Node.js吧!web
是Javascript的運行環境,不是一門新的語言,也不是JavaScript的框架,採用Google的V8引擎。能夠簡單的理解爲服務器看不見的瀏覽器,提供特殊的API能夠讀取請求、操做數據庫等,已經脫離來前端體系,是後端體系的內容。數據庫
Node.js平臺是用C/C++實現,運行的是JAVASCRIPT的腳本。它和JavaScript的關係就相似於JAVA和JAVA虛擬機。編程
既然Node.js並不是由JavaScript語言寫出,爲何就必定要使用JavaScript不可呢?後端
這裏面就涉及到一個歷史的小故事——Node.js,原名Web.js。其設計做者非純粹意義上專業領域出生的碼農,而是一位數學家,他但願能經過實現事件驅動和異步IO來設計一個高性能的WEB服務器,在比較了衆多語言以後,選擇了JavaScript。瀏覽器
那麼JavaScript又是憑藉什麼功能打動了這位大牛呢?緩存
函數式編程。 異步編程。在前端編程中,異步編程是習覺得常的事情。 沒有歷史包袱。如:Lua的同步庫已經廣泛被用戶熟悉,改變用戶習慣難度係數偏高。 V8引擎。在運行JavaScript以前,相比其它的JavaScript的引擎轉換成字節碼或解釋執行,V8將其編譯成原生機器碼,而且使用瞭如內聯緩存等方法來提升性能。也所以,JavaScript程序在V8引擎下的運行速度媲美二進制程序。
Node.js既是WEB服務器,又是高性能、可擴展的網絡應用框架,仍是單線程、事件驅動簡化網絡編程的。
目的:成爲一個快速構建、可伸縮的網絡應用平臺。服務器
(1)無需再花費力氣學一門新語言
(2)其餘語言能作的JS也能作,甚至更好網絡
動態網頁 Ajax cgi Web Socket。主要解決長連接問題。
基於Electron,node-webkit
Atom VSCode
網絡爬蟲 本地開發構建工具,如GRUNT等
APP後臺服務 海量數據上報服務
2012年,接入Node.js。其團隊目前已獨立開發了服務器端等WEB標準組建TSW。現在,除部分古老的功能外,其他基本已轉入由Node.js實現。既然如此強大,那麼咱們就來看看TSW的應用成果吧。
進程管理 監控體系——日誌系統、自動告警、惡意請求攔截等 問題定位——測試環境、用戶染色、定向抓包等 研發效率——先後端分離、代碼同構、頁面直出等 支持多種框架——Express、Koa、自研框架等