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

Node.js 基礎 - 需要了解的基本知識

發佈於2024-11-02
瀏覽:839

Node.js Basics - Essential Things to Know

概念亮點:

  1. Node.js 全域變數
  2. Node.js 模組
  3. 路徑模組
  4. 流程物件
  5. 處理輸入與輸出
  6. 文件管理與流

1.Node.js 全域變數

Node.js 附帶了幾個全域物件和函數,可以在應用程式中的任何位置使用它們,而無需 require() 它們。一些關鍵的全局物件包括:

  • __dirname: 目前模組的目錄名稱。
  • __filename: 目前文件的完整路徑。
  • setTimeout(), clearTimeout(), setInterval(), clearInterval(): 管理非同步計時的函數。

例如。 )

console.log(__dirname); // outputs the current directory
console.log(__filename); // outputs the full path of the current file 

2.Node.js 模組

Node.js 遵循模組化結構,其中程式碼被分成更小的、可重複使用的模組。您可以使用 require() 函數載入內建或自訂模組。

例如) Node.js 中有三種類型的模組:

  1. 核心模組:Node.js提供的fs、http、path等。
  2. 第三方模組:透過npm安裝,例如express或lodash。
  3. 自訂模組:由您建立用於組織程式碼。
const fs = require('fs'); // Require the built-in file system module

3. 路徑模組

Node.js 中的路徑模組提供了用於處理檔案和目錄路徑的實用程式。它對於使程式碼獨立於平台特別有用,因為路徑分隔符號(Windows 上的 \)可能會因作業系統而異。

例)path模組中的關鍵方法:

  • path.join() 將多個路徑段連接成一個。
  • path.basename() 返迴路徑的最後一部分(通常是檔案名稱)。
  • paht.extname() 傳回檔案副檔名。
const path = require('path');

const filePath = path.join(__dirname, 'folder', 'file.txt');
console.log(filePath); // Combines the paths to create a full file path

4. 行程對象

Node.js 中的進程物件提供有關當前 Node.js 進程的資訊和控制。它是一個全域對象,允許您與運行時環境聯網。

例如) 一些有用的屬性和過程方法包括:

  • process.argv: 傳遞給 Node.js 進程的參數。
  • process.env:環境變數。
  • process.exit(): 終止進程。
console.log(process.argv); // Returns an array of command-line arguments
console.log(process.env); // Accesses environment variables

5. 處理輸入和輸出

Node.js 提供了處理輸入和輸出的簡單方法,特別是透過其流程物件來處理標準輸入和輸出。

例如) 此範例偵聽使用者輸入並將其記錄至控制台。對於更高級的 I/O 處理,您還可以使用流,它允許您逐段處理數據,而不是一次將整個 I/O 加載到記憶體中。

process.stdin.on('data', (data) => {
  console.log(`You typed: ${data}`);
});

6. 文件管理和流

檔案管理是許多 Node.js 應用程式的關鍵部分,Node 的 fs(檔案系統)模組提供了一系列使用檔案系統的方法。您可以使用非同步或同步 API 讀取、寫入和管理檔案。

例如。 )

const fs = require('fs');

// Asynchronous file reading
fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

// Writing to a file
fs.writeFile('output.txt', 'This is some content', (err) => {
  if (err) throw err;
  console.log('File written successfully');
});

Node.js 還有一個強大的流處理系統,用於有效地處理大量資料。流通常用於讀取/寫入檔案或處理網路通訊。

const fs = require('fs');

const readStream = fs.createReadStream('example.txt');
const writeStream = fs.createWriteStream('output.txt');

readStream.pipe(writeStream); // Piping data from one file to another
版本聲明 本文轉載於:https://dev.to/ryoichihomma/nodejs-basics-3lnm?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • Async Void vs. Async Task在ASP.NET中:為什麼Async Void方法有時會拋出異常?
    Async Void vs. Async Task在ASP.NET中:為什麼Async Void方法有時會拋出異常?
    在ASP.NET async void void async void void void void void的設計無需返回asynchroncon而無需返回任務對象。他們在執行過程中增加未償還操作的計數,並在完成後減少。在某些情況下,這種行為可能是有益的,例如未期望或明確預期操作結果的火災和...
    程式設計 發佈於2025-06-03
  • 如何使用node-mysql在單個查詢中執行多個SQL語句?
    如何使用node-mysql在單個查詢中執行多個SQL語句?
    Multi-Statement Query Support in Node-MySQLIn Node.js, the question arises when executing multiple SQL statements in a single query using the node-mys...
    程式設計 發佈於2025-06-03
  • `console.log`顯示修改後對象值異常的原因
    `console.log`顯示修改後對象值異常的原因
    foo = [{id:1},{id:2},{id:3},{id:4},{id:id:5},],]; console.log('foo1',foo,foo.length); foo.splice(2,1); console.log('foo2', foo, foo....
    程式設計 發佈於2025-06-03
  • Go語言如何動態發現導出包類型?
    Go語言如何動態發現導出包類型?
    與反射軟件包中的有限類型的發現能力相反,本文探索了替代方法,探索了在Runruntime。 go import( “ FMT” “去/進口商” ) func main(){ pkg,err:= incorter.default()。導入(“ time”) 如果er...
    程式設計 發佈於2025-06-03
  • 如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
    如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
    將pandas dataframe列轉換為dateTime格式示例:使用column(mycol)包含以下格式的以下dataframe,以自定義格式:})指定的格式參數匹配給定的字符串格式。轉換後,MyCol列現在將包含DateTime對象。 date oped filtering > = ...
    程式設計 發佈於2025-06-03
  • 如何同步迭代並從PHP中的兩個等級陣列打印值?
    如何同步迭代並從PHP中的兩個等級陣列打印值?
    同步的迭代和打印值來自相同大小的兩個數組使用兩個數組相等大小的selectbox時,一個包含country代碼的數組,另一個包含鄉村代碼,另一個包含其相應名稱的數組,可能會因不當提供了exply for for for the uncore for the forsion for for ytry...
    程式設計 發佈於2025-06-03
  • C++成員函數指針正確傳遞方法
    C++成員函數指針正確傳遞方法
    如何將成員函數置於c 的函數時,接受成員函數指針的函數時,必須同時提供對象的指針,並提供指針和指針到函數。需要具有一定簽名的功能指針。要通過成員函數,您需要同時提供對象指針(此)和成員函數指針。這可以通過修改Menubutton :: SetButton()(如下所示:[&& && && &&華)...
    程式設計 發佈於2025-06-03
  • 如何使用FormData()處理多個文件上傳?
    如何使用FormData()處理多個文件上傳?
    )處理多個文件輸入時,通常需要處理多個文件上傳時,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    程式設計 發佈於2025-06-03
  • 解決Spring Security 4.1及以上版本CORS問題指南
    解決Spring Security 4.1及以上版本CORS問題指南
    彈簧安全性cors filter:故障排除常見問題 在將Spring Security集成到現有項目中時,您可能會遇到與CORS相關的錯誤,如果像“訪問Control-allo-allow-Origin”之類的標頭,則無法設置在響應中。為了解決此問題,您可以實現自定義過濾器,例如代碼段中的MyFi...
    程式設計 發佈於2025-06-03
  • 如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    postgresql:為每個唯一標識符提取最後一行,在Postgresql中,您可能需要遇到與在數據庫中的每個不同標識相關的信息中提取信息的情況。考慮以下數據:[ 1 2014-02-01 kjkj 在數據集中的每個唯一ID中檢索最後一行的信息,您可以在操作員上使用Postgres的有效效率: ...
    程式設計 發佈於2025-06-03
  • 為什麼不使用CSS`content'屬性顯示圖像?
    為什麼不使用CSS`content'屬性顯示圖像?
    在Firefox extemers屬性為某些圖像很大,&& && && &&華倍華倍[華氏華倍華氏度]很少見,卻是某些瀏覽屬性很少,尤其是特定於Firefox的某些瀏覽器未能在使用內容屬性引用時未能顯示圖像的情況。這可以在提供的CSS類中看到:。 googlepic { 內容:url(&...
    程式設計 發佈於2025-06-03
  • 如何使用Python的請求和假用戶代理繞過網站塊?
    如何使用Python的請求和假用戶代理繞過網站塊?
    如何使用Python的請求模擬瀏覽器行為,以及偽造的用戶代理提供了一個用戶 - 代理標頭一個有效方法是提供有效的用戶式header,以提供有效的用戶 - 設置,該標題可以通過browser和Acterner Systems the equestersystermery和操作系統。通過模仿像Chro...
    程式設計 發佈於2025-06-03
  • Java為何無法創建泛型數組?
    Java為何無法創建泛型數組?
    通用陣列創建錯誤 arrayList [2]; JAVA報告了“通用數組創建”錯誤。為什麼不允許這樣做? 答案:Create an Auxiliary Class:public static ArrayList<myObject>[] a = new ArrayList<my...
    程式設計 發佈於2025-06-03
  • 如何從PHP中的數組中提取隨機元素?
    如何從PHP中的數組中提取隨機元素?
    從陣列中的隨機選擇,可以輕鬆從數組中獲取隨機項目。考慮以下數組:; 從此數組中檢索一個隨機項目,利用array_rand( array_rand()函數從數組返回一個隨機鍵。通過將$項目數組索引使用此鍵,我們可以從數組中訪問一個隨機元素。這種方法為選擇隨機項目提供了一種直接且可靠的方法。
    程式設計 發佈於2025-06-03
  • 使用jQuery如何有效修改":after"偽元素的CSS屬性?
    使用jQuery如何有效修改":after"偽元素的CSS屬性?
    在jquery中了解偽元素的限制:訪問“ selector 嘗試修改“:”選擇器的CSS屬性時,您可能會遇到困難。 This is because pseudo-elements are not part of the DOM (Document Object Model) and are th...
    程式設計 發佈於2025-06-03

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

Copyright© 2022 湘ICP备2022001581号-3