了解 Node.js,這是一個用于構建服務器端或桌面應用程序的 JavaScript 運行時。
JavaScript 和 Node.js
Javascript 自 1995 年以來就已經存在,并已成為 Web 開發的主要語言。在其生命的大部分時間里,JavaScript 主要用于<script>
在 Web 瀏覽器中執行的標簽內的客戶端腳本。這種限制意味著開發人員經常在 Web 應用程序的前端(客戶端)和后端(服務器端)方面使用多種不同的語言和框架工作。
盡管還有其他項目將 JavaScript 引入服務器端應用程序,但隨著 2009 年 Node.js 的推出,該功能開始發揮作用。Node 允許開發人員編寫直接在計算機進程本身而不是瀏覽器中運行的 JavaScript 代碼。因此,Node 可用于編寫服務器端應用程序,以訪問操作系統、文件系統以及構建全功能應用程序所需的一切。
Node.js 是用 C、C++ 和 JavaScript 編寫的,它建立在開源V8?JavaScript 引擎之上,該引擎還支持 Google Chrome 等瀏覽器中的 JS。由于 V8 支持 JavaScript 中的新功能,它們被合并到 Node.js 中。
特定于節點的功能
全局變量
Node 提供對幾個重要的全局對象的訪問,以便與 Node 程序文件一起使用。在編寫將在 Node 環境中運行的文件時,這些變量將可以在文件的全局范圍內訪問。
module
是一個對象,指的是將從文件中導出的功能。在 Node 中,每個文件都被視為一個模塊。require()
是用于從其他文件或 Node 包中導入模塊的函數。process
是一個引用運行 Node 程序的實際計算機進程的對象,并允許訪問命令行參數等等。
模塊
Node 有許多內置模塊來幫助與命令行、計算機文件系統和 Internet 進行交互。這些包括
- 用于創建 Web 服務器的HTTP和HTTPS 。
- File System、OS和Path用于與文件系統、操作系統和文件/目錄路徑進行交互。
您可以查看完整文檔以了解更多 Node 的內置功能。
為什么是節點?
根據Node.js 主頁,Node “使用事件驅動的非阻塞 I/O 模型”。實際上,這意味著 Node 可以很好地處理異步 JavaScript 代碼以執行許多異步活動,例如讀取和寫入文件系統、處理與數據庫服務器的連接或作為 Web 服務器處理請求。
為了處理異步代碼,Node 使用基于回調的系統。將實現一些異步活動的節點函數和方法采用回調函數。只要異步操作已解決,就會調用此回調。按照慣例,此回調的第一個參數是錯誤占位符。如果異步操作發生錯誤(例如,試圖讀取不存在的文件),則錯誤參數將是一個錯誤對象,但null
如果沒有發生錯誤,它將是一個錯誤對象。
在這個例子中,我們使用 Node 的內置fs
模塊來讀取script.js文件。文件讀取操作完成后調用回調函數。如果發生錯誤,它將被傳入error
并拋出。如果不存在,則從文件讀取操作中檢索到的數據將記錄到控制臺。
如何使用節點
該視頻將向您展示如何下載和安裝 Node.js。
要在 Node 中運行 JS 文件,node
后跟文件路徑的命令將執行程序文件。
例如,如果我們將以下內容保存在文件script.js中:
在與script.jsnode script.js
相同的文件夾中運行終端命令將啟動 Node,打印到終端窗口,然后退出,因為腳本文件已完成執行。I am a Node program
節點作為 REPL
Node 也可以在終端窗口中用作 Read-Evaluate-Print-Loop 或 REPL。此功能允許您從命令行執行 JavaScript 命令。
安裝 Node 后,您可以通過node
在終端中運行命令并按來啟動 REPL?Enter。您現在處于交互式 JavaScript 環境中,可以運行任何有效的 JavaScript 代碼,例如4 + 5
.?執行命令后,Node 將始終打印該評估的結果。
node
在此示例中,用戶使用終端命令在第一行啟動節點。在第 2 行,用戶鍵入4 + 5
并使用返回鍵進行評估。9
打印到輸出終端。
在第 4 行,用戶打開nodeIsGreat
.?因為這個函數聲明需要多行,Node REPL 將...
在一行的開頭打印以表明它仍在讀取用戶的輸入語句并且尚未評估。在第 6 行關閉函數聲明后,undefined
打印到輸出終端,因為函數聲明本身不計算任何值。在第 8 行調用該函數時,Node is great!
記錄到控制臺,并undefined
在之后記錄,因為nodeIsGreat()
返回undefined
.
要退出 Node REPL,請.exit
隨時使用該命令并返回到系統 shell。按ctrl+c兩次也將退出。
加載現有文件
Node REPL 還可以加載現有的 JS 文件。如果我們將以下代碼保存到script.js中:
我們可以使用.load
它來將它加載到 REPL 中。.load
接受一個路徑參數,所以要加載script.js?,我們將使用.load ./script.js
.
加載腳本文件后,變量可以在 REPL 中訪問,因此當我們評估a
變量時,它的值已通過加載script.js設置,并且“節點 REPL 很有趣!”?打印到控制臺。
通過在終端中運行自己嘗試一下,node
或者查看REPL 文檔以獲取更多功能。
包管理
Node 包是在 Node 開發人員之間共享模塊的便捷方式。服務npm是 Node 的默認包管理器,它附帶了 Node 的安裝。
npm 允許訪問數十萬個可用的開源包。
除了 npm,yarn作為另一個 JS 包管理器越來越受歡迎。
要了解更多信息并查看 npm 的實際應用,請參加我們的瀏覽器兼容性和轉譯課程。
節點版本
Node 的主要版本旨在支持最新的 JavaScript 功能,包括 ES6/ES2015 及更高版本,無需轉譯。要查看不同版本支持的 JavaScript 功能列表,請訪問node.green
版本管理
與任何主要的軟件版本一樣,頂級 Node 版本(8.x、7x 等)有時會在舊版本環境中構建的應用程序中引入重大更改。版本管理器可用于在單臺計算機上的多個 Node 版本之間切換。有兩個版本管理器提供此功能:nvm(節點版本管理器)和n。N 可以很容易地安裝為 npm 包!