文章目錄
- Node.js
- Node介紹
- Node特點
- Node使用場合
- Node組成
- 構建Node程式
Node.js
Node介紹
Node.js簡稱Node,是一個可以使JavaScript運行在服務器端的開發平臺
JavaScript本是一種Web前端語言,Node.js讓JavaScript成為服務器端腳本語言
Node.js選擇JavaScript作為實作語言的原因:
- JavaScript滿足CommonJS標準,符合事件驅動,用戶較多且門檻較低;
- Chrome的V8引擎具有出色的性能,
Node.js將 V8引擎 封裝起來,作為服務器運行平臺,以執行 JavasScript 撰寫的后端腳本程式

解釋:
- Node.js運行時環境包含執行JavaScript程式所需的一切條件,該引擎會將JavaScript代碼轉換為更快的機器碼
- Node.js進一步提升JavaScript的能力,使JavaScript可以訪問檔案、讀取資料庫、訪問行程,從而勝任后端任務
- 使用Node.js 的最大優點是開發人員可以在客戶端和服務器端撰寫JavaScript,打通了前后端
- Node.js發展迅速,目前已成為JavaScript服務器端運行平臺的事實標準

解釋:
- Node.js是跨平臺的,能運行在Windows、macOS和Linux平臺上
- Node.js除了自己的標準類別庫之外,還可使用大量的第三方模塊系統來實作代碼的分享和重用
- 與其他后端腳本語言不同的是:Node.js 已內置處理網路請求和回應的函式庫,也就是自備了HTTP服務器,所以不需要額外部署HTTP服務器,
Node特點
非阻塞I/O: 非阻塞I/O又稱異步式I/O,是Node.js的重要特點

- 非阻塞I/O:是指當執行緒遇到I/O操作時,不會以阻塞方式等待I/O操作完成或資料回傳,而只是將I/O請求轉發給作業系統,繼續執行下一條指令
- 阻塞I/O:是指執行緒在執行程序中遇到I/O操作時,作業系統會撤銷該執行緒的CPU控制權,使其暫停執行,處于等待狀態,同時將資源轉讓給其他執行緒
事件驅動: 非阻塞I/O與事件驅動密不可分
在事件驅動模型中,會生成一個事件回圈執行緒來監聽事件,不斷地檢查是否有未處理的事件

- 事件驅動以事件為中心,Node.js將每一個任務都當成事件來處理,Node.js在執行程序中會維護一個事件佇列,需執行的每個任務都會加入事件佇列并提供一個包含處理結果的回呼函式
- Node.js的異步機制是基于事件的,所有磁盤I/O、網路通信、資料庫查詢事件都以非阻塞的方式請求,回傳的結果由事件回圈執行緒來處理
單執行緒:
Node.js的應用程式是單行程、單執行緒的,但是通過事件和回呼支持并發,性能變得非常高,
在阻塞模式下,一個執行緒只能處理一項任務,要想提高吞吐量必須使用多執行緒,
在非阻塞模式下,執行緒不會被I/O操作阻塞,該執行緒所使用的CPU核心利用率永遠是100%,I/O操作以事件的方式通知作業系統,
Node.js在主執行緒中維護一個事件佇列,當接收到請求后,就將該請求作為一個事件放入該佇列中,然后繼續接收其他請求,
Node.js內部通過執行緒池來完成非阻塞I/O操作,Node.js的單執行緒是指對JavaScript層面的任務處理是單執行緒的,而Node.js本身是一個多執行緒平臺,
總結:
- Node.js采用非阻塞I/O與事件驅動相結合的編程模式,與傳統同步I/O線性編程思維有很大的不同
- Node.js程式的控制很大程度要依靠事件和回呼函式,這不符合開發人員的常規線性思路,需要將一個完整的邏輯拆分為若干單元(事件),從而增加了開發和除錯的難度
Node使用場合
適合用Node.js的場合:
- REST API:REST API是一種前后端分離的應用程式架構,
- 單頁Web應用:加載單個HTML頁面,并在用戶與應用程式互動時動態更新該頁面的Web應用程式,
- 統一Web應用的UI層:Node.js是面向服務的架構,其能夠更好地實作前后端的依賴分離,可以將所有的關鍵業務邏輯都封裝成REST API,UI層只需要考慮如何用這些API構建具體的應用,
- 準實時系統:如聊天系統、微博系統、博客系統的準實時社交系統,特點是輕量級、高流量,沒有復雜的計算邏輯,
- 游戲服務器:程式員不必使用C語言就能開發游戲的服務器程式,
- 微服務架構:Node.js也可用于實作基于微服務架構的應用,
不適合用Node.js的場合:
- 資料加密和解密
- 資料壓縮和解壓
- 模板渲染
Node組成
- JavaScript 由三部分組成,ECMAScript,DOM,BOM
- Node.js是由 ECMAScript 及 Node環境 提供的一些 附加API 組成的,包括檔案、網路、路徑等等一些更加強大的 API

構建Node程式
構建第一個Node.js應用程式
//1、匯入Node的http模塊(內置的http服務器模塊)
const http = require('http');
//2、創建http服務器 req:request 客戶端請求物件,用于向服務端發送請求
// res:response 服務端回應物件,用于向客戶端發送相應資訊
const htttpServer = http.createServer(function (req,res) {
//設定回應頭資訊:200是狀態碼:表示請求-回應成功 Content-Type:是回應資訊的格式
res.writeHead(200,{'Content-Type':'text/plain'});
//2、向客戶端發送字串
res.end('Hello Word');
})
//3、注冊監聽
htttpServer.listen(8080,function (){
console.log(('服務器在8080埠監聽'))
})

注意:在終端用 node 程式檔案名 啟動的方式,注意路徑是否為當前目錄,確保可以找到相應js檔案

注意:在終端使用 npm管理器 啟動 需要在package.json檔案下的"scripts"中 添加 "start" : "{node ./src/server.js }" 并使用 npm start 來啟動

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/292362.html
標籤:其他
上一篇:javascript:事件,物件
下一篇:JS 圖片切換
