Node.js 是什麼?Node.js與JavaScript的區別是什麼?
node.js是什麼?
Node.js是一個Javascript執行環境(runtime)。
Node.js與JavaScript的區別是什麼?
本質:
Javascript是一種web前端語言,主要用於web開發中,由瀏覽器解析執行
Node.js是一個可以快速構建網路服務及應用的平臺,是用Javascript語言構建的服務平臺,可用於後端建立伺服器
區別:
Javascript 主要應用前端 是程式語言 客戶端程式語言(需要瀏覽器的javascript直譯器進行解釋執行)
node.js 主要應用後端 1個平臺 執行環境(一個基於Chrome JavaScript執行時建立的平臺,它是對Google V8引擎進行了封裝的執行環境)
簡單的說node.js就是把瀏覽器的直譯器封裝起來作為伺服器執行平臺,用類似javascript的結構語法進行程式設計,在node.js上執行。
Node.js的優點?Node.js的缺點?
優點:
1.事件驅動
2.非同步程式設計
3.非阻塞模式的IO
4.輕量高效
缺點:
1.可靠性低
2.單程序,單執行緒,只支援單核cpu,不能充分的利用多核cpu伺服器。一旦這個程序崩掉,那麼整個web服務就崩掉了。
Node.js適用場景?Node.js不適用的場景?
適用場景:
1.JSON APIL ——構建一個Rest/JSON API服務,node.js可以充分發揮其非堵塞IO模型以及javascript對JSON的功能支援
2.單頁面、多Ajax請求應用——前端有大量的非同步請求,需要伺服器後端有極高的響應速度
3.基於node.js開發Unix命令列工具——node.js可以大量產生子程序,並以流的方式輸出
4.流式資料——傳統的web應用,通常會將HTTP 請求喝響應看成是原子事件。而node.js會充分利用流式資料這個特點,構建非常酷的應用
不適用場景:
cpu使用率較重、io使用率較輕的應用
Node.js的基本語法
基本語法與 javascript 一樣
這裡我們使用exports匯出一個函式,然後再另一檔案中通過require匯入入一個模組
例如 :
在 a.js 中寫一個函式
var hello=function(){
console.log('hello')
}
export.hello=hello;
在 b.js 中 需要用hello這個函式
var a=require('a');
a.hello()
單執行緒
Node的設計中就是將耗時長的操作代理給作業系統或者多執行緒,這部分操作就是磁碟I/O和網路I/O。所以Node中非同步非常常見,因為要將耗時的操作從主執行緒上脫離。但是這些I/O執行緒並不怎麼耗費CPU。
無法利用多核CPU是指Node的主執行緒無法利用上硬體上額外的CPU。這就需要用到cluster來在機器上啟動多個Node例項,將額外的CPU也使用上。
非同步 IO
事件驅動
REPL
REPL(Read-Eval-Print Loop) 中文的話有翻譯成“互動式直譯器”或“互動式程式設計環境”的。