nodejs是一個基於Chrome V8引擎的JavaScript運行環境,一個讓JavaScript運行在服務端的開發平台,讓腳本語言JavaScript能作為伺服器語言。 node的優點:超強的高並發能力、使用JavaScript語法等。
本教學操作環境:windows7系統、nodejs 14.15.4版,DELL G3電腦。
Node.js發佈於2009年5月,由Ryan Dahl開發,是一個基於Chrome V8引擎的JavaScript運行環境,使用了一個事件驅動、非阻塞式I/O模型, 讓JavaScript 運行在服務端的開發平台,它讓JavaScript成為與PHP、Python、Perl、Ruby等服務端語言平起平坐的腳本語言。
Node.js對一些特殊用例進行最佳化,提供替代的API,讓V8在非瀏覽器環境下運作得更好,V8引擎執行Javascript的速度非常快,效能非常好,基於Chrome JavaScript運行時建立的平台, 用於方便地建立響應速度快、易於擴展的網路應用。
Node.js使用Google V8 JavaScript引擎,因為:
V8是基於BSD授權的開源軟體
V8速度非常快
V8專注於網路功能,在HTTP、DNS、TCP等方面更成熟
## Node.js的優勢?為什麼腳本語言JavaScript能作為伺服器語言?
優點1 Node.js有超強的高同時能力## Node.js的首發目標,是提供一種簡單的,用語創建高效能伺服器及在該伺服器中運行各種應用程式的開發工具。
相對於Java,PHP或.net 等經典伺服器端語言中,Node.js正像一個年輕力勝的小伙子,Java語言會為每一個客戶端創建一個新的線程,而每一個客戶端連線建立一個線程,需要耗費2MB的記憶體。也就是說。理論上一個8GB的伺服器可以同時連接用戶數為4000個左右,要存在高並發支援更多的用戶,必須額外增加伺服器。
Node.js不會為每位顧客連線建立一個新的執行緒,而只使用一個執行緒。
這是Node基於單一執行緒(只有一個主執行緒去接請求,給予回應)
那麼這不是更慢嗎?事實上,並不是這樣。
Node.js當接收到一個使用者連接,就會觸發一個內部事件。透過事先定義好的函數,達到響應用戶的行為。 Node.js主線程並不關心程式要走什麼流程,實際上,有另外的工作線程去幫Node主線程去訪問文件,讀數據庫,當工作線程讀取到文件數據,或數據庫裡面的數據,就會把回呼函數回傳給Node主執行緒去執行,例如把找到的資料傳回客戶端,關閉連接一些操作。 (這就是Node非阻塞I/O,基於事件驅動)。
下面附上我畫的圖(如有不當之處請見諒哈)
# 這時候我們腦袋裡面應該有個雛形,就是--Node.js主線程一直在接收請求和回應請求這個活裡面倒騰,這樣它就可以不停地接收多個客戶端發過來的請求,它不用傻傻去等待IO操作,IO工作執行緒找到了數據,就會觸發事件回呼函數告訴主執行緒資料已經拿到了,這時候主線就執行回呼函數,把資料回傳給客戶端。
理論上,8G記憶體的伺服器,可以同時容納3到4萬用戶的連線。
這就是Node的閃光之處(單線程,非阻塞IO,事件驅動)
優點 2 Node用的是JavaScript的語法
Node.JS基於javaScript 的V8引擎,也就是說只要會JS的語法,就能用於後端開發,但是Node官方推薦用ECMA Script6(ES6)語法。 Node打破了過去JavaScript只能在瀏覽器運作的局面,讓前後端程式設計環境統一,這樣就大幅降低了開發成本。 (這一點對前端開發人員非常友好,JS能做的東西越來越多,前端發展就越來越快)
#優點 3 Node.JS 出現促成前端工程化想法 前端近年來發展迅速,Node.js扮演無法取代的角色。
Node.js不只是運作環境,也是一門脫胎換骨全新的JavaScript語言,它容納了JS語法基礎,還加入一些內部模組
處理請求回應的模組
fs 用來讀取檔案中的模組
url #套件管理工具,讓我們可以很方便的透過命令列就能下載我們專案所依賴的套件
如:
npm 對## npm install -g create-react-app 等等
定義模組語法 ↓↓
const http = require('http')
const Jquery = require('jquery');
#Node.js 在某種層面上影響前端發展的模式。讓前端工程模組化,開發迅速,降低程式碼耦合度,可維護性大為增強。 Node.js適合做什麼?
以下列出幾個Node.js應用情境#更多程式相關知識,請造訪:
程式教學以上是nodejs什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!