」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Node.js 基礎知識

Node.js 基礎知識

發佈於2024-11-08
瀏覽:478

Node.js Basics

Node.js 是一個 JavaScript 執行環境,允許開發人員在 Web 瀏覽器之外執行 JavaScript 程式碼。它基於Chrome 的V8 JavaScript 引擎構建,採用事件驅動、非阻塞I/O 模型,使其輕量級、高效,非常適合需要處理多個並發連接的數據密集型應用程序,例如Web 伺服器、API、和即時應用程式。

Node.js 的關鍵面向包括:

非同步:同時處理多個請求,無需等待操作完成。

單執行緒: 在單一執行緒上運行,但使用事件循環來有效管理許多任務。

跨平台:可以部署在Windows、macOS和Linux上。

NPM(節點套件管理器): 可用於簡化開發的龐大函式庫和工俱生態系統。

Node.js 讓開發人員能夠在伺服器端使用 JavaScript 建立可擴展的高效能應用程式。

以下是 Node.js 的前 5 個功能以及每個功能的範例:

1.非同步與非阻塞 I/O

Node.js 允許非同步執行函數,這表示伺服器可以同時處理多個請求,而無需等待操作完成。

例子:

const fs = require('fs');

// Asynchronous file reading
fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) {
    console.error("Error reading file:", err);
    return;
  }
  console.log("File content:", data);
});

console.log("This prints before the file content is read!");

說明:以非阻塞方式讀取文件,允許在等待文件操作完成的同時執行其他程式碼。

2.帶事件循環的單線程

儘管是單線程的,Node.js 使用事件循環來有效地處理多個並發請求。

例子:

const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello World!\n');
});

server.listen(3000, () => {
  console.log('Server running at http://127.0.0.1:3000/');
});

說明:事件循環允許伺服器處理多個傳入請求,而無需為每個請求建立新執行緒。

3.使用 V8 引擎快速執行

Node.js 基於 Google 的 V8 JavaScript 引擎構建,以其速度和效能而聞名。

例子:

console.time('Execution Time');

let sum = 0;
for (let i = 0; i 



說明:由於V8引擎的最佳化,程式碼計算數字總和並使用console.time來示範其執行速度。

4。 NPM(節點套件管理器)

Node.js 有一個內建的套件管理器 NPM,它可以存取數千個開源程式庫和工具。

例子:

npm install express

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('Express server listening on port 3000');
});

說明:在此範例中,我們安裝並使用 Express 框架(一種透過 NPM 提供的熱門 Web 框架)來建立一個簡單的 Web 伺服器。

5。跨平台相容性

Node.js 應用程式可以跨不同平台部署,例如 Windows、macOS 和 Linux。

例子:

const os = require('os');

console.log('Platform:', os.platform());
console.log('Architecture:', os.arch());

說明:此腳本使用 os 模組來檢查並列印目前平台和系統架構,展示了 Node.js 跨不同環境工作的能力。

這些功能使 Node.js 具有高度通用性,可用於建立高效能、可擴展的應用程式。

版本聲明 本文轉載於:https://dev.to/mrcaption49/nodejs-introduction-part-1-5c4a?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 黑客啤酒節第二週
    黑客啤酒節第二週
    第二週,我必須花更少的時間尋找問題。這次是 Mattermost 文件網站在深色模式下發生的錯誤,其中特定按鈕的顏色不正確。 我知道 Docusaurus,因為我看過其他文件和基於它構建的一些課程材料網站。它在底層使用了 React,所以我很熟悉它。但這個文檔網站是用 Python 寫的。雖然我不...
    程式設計 發佈於2024-11-08
  • Python 中的 Try/Except 與 If/Else:哪種方法比較有效?
    Python 中的 Try/Except 與 If/Else:哪種方法比較有效?
    Try/Except 與 If/Else:哪一種方法較可取? 在 Python 中處理異常時,開發人員經常面臨困境是否測試有效性或嘗試某項操作並處理任何產生的異常。本文深入探討了每種方法的細微差別,為決策提供指導和範例。 嘗試/除外:擁抱例外根據 PEP 20,錯誤除非明確地保持沉默,否則絕不應悄無...
    程式設計 發佈於2024-11-08
  • Git 遠端分支
    Git 遠端分支
    本週我們必須在另一個人的儲存庫中添加一個功能。具體來說,我們需要在使用者的 $HOME 資料夾中新增一個預設配置 TOML 文件,其中包含 CLI 工具的預設參數。我已為 readMeMaker 儲存庫做出了貢獻: https://github.com/jadorotan/readMeMaker.g...
    程式設計 發佈於2024-11-08
  • 對於簡單的操作,流總是比傳統集合慢嗎?
    對於簡單的操作,流總是比傳統集合慢嗎?
    Java 8 流性能對比傳統集合您最近涉足Java 8 並進行了非正式基準測試,以將其Stream API 與經典集合的表現進行比較。您的測試涉及過濾整數列表、提取偶數的平方根並將結果儲存在 Double 列表中。然而,您質疑測試的有效性,並渴望澄清真正的效能影響。 評估基準測試您的初步結果,表明流...
    程式設計 發佈於2024-11-08
  • 語言 API,允許您添加您的母語。
    語言 API,允許您添加您的母語。
    早在2016 年4 月,我就有了為一個我非常喜歡的部落“Igede Language”創建一個字典項目的想法,我決定將其稱為“Igede Dictionary ”,儘管我不是“ t 是母語人士。 這讓我撰寫並翻譯了 5,000 多個單詞,從 Igede 語言翻譯成英語。毫無疑問,這是我曾經研究過或擁...
    程式設計 發佈於2024-11-08
  • 使用 Playwright、TypeScript 和 JavaScript 進行自動化
    使用 Playwright、TypeScript 和 JavaScript 進行自動化
    剧作家与 TypeScript | JavaScript 安装 Playwright 是 Microsoft 与 Puppeteer 团队合作推出的基于 Web 的现代 API 自动化工具,Puppeteer 是一个 JavaScript 库,它提供高级 API 来通过 DevTools 协议或 W...
    程式設計 發佈於2024-11-08
  • Python 中的整數有幾個位元?
    Python 中的整數有幾個位元?
    計算整數的位數在Python中,整數沒有固有的長度概念。但是,如果您需要確定整數中的位數,可以考慮以下幾種方法。 轉換為字串一個簡單的方法是將整數轉換為字串,然後計算結果字串的長度。例如:length = len(str(123))這種方法很簡單,但需要將整數轉換為字串的中間步驟。 使用對數另一個...
    程式設計 發佈於2024-11-08
  • 為什麼使用 Z-Index 時我的偽元素會出現在標題元素上方?
    為什麼使用 Z-Index 時我的偽元素會出現在標題元素上方?
    Z-Index 與偽元素:案例研究在CSS 中,z-index 屬性指定元素的堆疊順序頁面,確定哪些元素出現在其他元素“前面”或“後面”。然而,當涉及偽元素時,例如 ::before 或 ::after,它們與 z-index 的交互有時可能不那麼簡單。 考慮一個場景,我們使用::before 偽元...
    程式設計 發佈於2024-11-08
  • 如何在剝離標籤之前刪除頑固的 HTML 特殊字元?
    如何在剝離標籤之前刪除頑固的 HTML 特殊字元?
    去除頑固的HTML 特殊字符strip_tags 函數雖然擅長刪除HTML 標籤,但無法處理討厭的HTML 特殊字符,例如用於不間斷空格或© 用於版權符號。這可能是創建乾淨 RSS 來源的絆腳石。 要解決此問題,請考慮使用以下策略之一:HTML 實體解碼:在字串經過strip_tags 之前,使用h...
    程式設計 發佈於2024-11-08
  • 如何在 Go 中解密 AES ECB 模式加密?
    如何在 Go 中解密 AES ECB 模式加密?
    Go 中的AES ECB 加密Go 中的AES ECB 加密package main import ( "crypto/aes" "fmt" ) func decryptAes128Ecb(data, key []byte) []byte { ...
    程式設計 發佈於2024-11-08
  • PHP 會話管理中的 session_unset() 和 session_destroy() 有什麼不同?
    PHP 會話管理中的 session_unset() 和 session_destroy() 有什麼不同?
    揭示PHP 中session_unset() 和session_destroy() 的獨特作用在PHP 會話管理領域,出現了兩個關鍵函數: session_unset() 和session_destroy()。雖然它們似乎都圍繞著會話資料操作,但它們的功能和效果卻顯著不同。 1。理解差異根據 PHP...
    程式設計 發佈於2024-11-08
  • 使用 Vue jsx 進行動態佈局:靈活且可維護的 UI 指南
    使用 Vue jsx 進行動態佈局:靈活且可維護的 UI 指南
    Written by Dubem Izuorah Have you ever spent hours tweaking the same web layout across multiple pages or struggled to make your UI adapt to changing ...
    程式設計 發佈於2024-11-08
  • 以下是一些標題選項,請記住問題格式和文章的重點是控制選擇框選項寬度:

**選項 1(更多技術性):**
* **如何控制Sele的寬度
    以下是一些標題選項,請記住問題格式和文章的重點是控制選擇框選項寬度: **選項 1(更多技術性):** * **如何控制Sele的寬度
    如何控制選擇框選項的寬度當選擇框中的選項超出框的寬度時,可能會造成混亂以及笨拙的外觀。為了解決這個問題,我們可以同時使用 CSS 和 JavaScript 來自訂選項的寬度並截斷任何多餘的文字。 CSS 方法:雖然單獨使用 CSS 是不行的足以設定選項的寬度,我們可以利用它來固定選擇框本身的寬度。透...
    程式設計 發佈於2024-11-08
  • C++ 異常說明符值得這麼麻煩嗎?
    C++ 異常說明符值得這麼麻煩嗎?
    C 中的異常說明符:你應該使用它們嗎? C 中的例外說明符可讓您指示函數是否可能拋出特定的例外類型。然而,由於擔心 Visual Studio .NET 中的編譯器執行、程式終止和非標準行為,人們對其實際用途產生了疑問。 為什麼不使用異常說明符:有限執行:編譯器不嚴格執行異常說明符,從而減少了它們提...
    程式設計 發佈於2024-11-08
  • 使用 .EJS 範本配置 Express
    使用 .EJS 範本配置 Express
    通常,我使用經典的入門版。 Expressjs.com const express = require('express') const app = express() const port = 3000 app.set('view engine', 'ejs') app.use(express....
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3