nodejs核心模塊有哪些?


全局對象

在瀏覽器JS中,通常window是全局對象,而nodejs中的全局對象是global,所有全局變量都是global對象的屬性。

在nodejs中能夠直接訪問到的對象通常都是global的屬性,如console、 process等

 

全局對象與全局變量

global最根本的作用是作為全局變量的宿主。

全局變量的條件:

在最外層定義的變量;全局對象的屬性;隱式定義的變量(未定義直接賦值的變量)

定義一個全局變量,同時也是全局對象的屬性。

永遠使用var定義變量以避免引入全局變量,因為全局變量會污染命名空間,提高代碼的耦合風險。

 

process

process是一個全局變量,即global對象的屬性。它用於描述nodejs進程狀態的對象,提供一個與操作系統的簡單接口。

process.argv是命令行參數數組,第一個元素是node, 第二個是腳本文件名,從第三個開始每個元素是一個運行參數。

console.log(process.argv);

process.stdout是標准輸出流。

process.stdin是標准輸入流。

process.nextTick(callback)的功能是為事件循環設置一項任務,會在下次事件循環調響應時調用callback

還有process.platform, process.pid, process.execPath, process.memoryUsage()等。posix進程信號響應機制。

 

console

用於提供控制台標准輸出。

  • console.log()

  • console.error()

  • console.trace()

 

常用工具util

util是一個Node.js核心模塊,提供常用函數的集合,用於彌補核心js的功能過於精簡的不足。

util.inherits實現對象間原型繼承的函數。js面向對象特性是基於原型的。

util.inspect將任意對象轉換為字符串的方法。

util.isArray(), util.isRegExp(), util.isDate(), util.isError(), util.format(), util.debug()等

 

事件機制events--Events模塊

events是NodeJs最重要的模塊。NodeJs本身架構就是事件式的,而它提供了唯一的接口,所以堪稱NodeJs事件編程的基石。

 

事件發射器

events模塊只提供一個對象events.EventEmitter.它核心就是事件發射與事件監控器功能的封裝。

EventEmitter常用的API:

  • EventEmitter.on(event, listener)為指定事件注冊一個監聽器,接受一個字符串event和一個回調函數listener。

  • EventEmitter.emit(event, [arg1], [arg2], [...])發射event事件,傳遞若干可選參數到事件監聽器的參數表。

  • EventEmitter.once(event, listener)為指定事件注冊一個單次監聽器,即監聽器最多只會觸發一次,觸發后立刻解除該監聽

  • EventEmitter.removeListener(event, listener)移除指定事件的某個監聽器,listener必須是該事件已經注冊過的監聽器。

  • EventEmitter.removeAllListeners([event])移除所有事件的所有監聽器,如果指定event,則移除指定事件的所有監聽器。

 

error事件

遇到異常的時候,通常會發射error事件。

繼承EventEmitter

不會直接使用EventEmitter, 而是在對象中繼承它。包括fs, net, http在內,只要是支持事件響應的核心模塊都是EventEmitter的子類。

 

文件系統fs--fs模塊

文件操作的封裝,提供了文件的讀取、寫入、更名、刪除、遍歷目錄、鏈接等posix文件系統操作。有異步和同步兩個版本。

fs.readFile(filename, [encoding], [callback(err, data)])是最簡單的讀取文件的函數。

var fs = require("fs");fs.readFile("server.js", "utf-8", function(err, data){ if (err){ console.log(err); }else{ console.log(data); }})

fs.readFileSync

fs.readFileSync(filename, [encoding])是fs.readFile同步的版本。它接受的參數和fs.readFile相同,而讀取到的文件內容會以函數返回值的形式返回。如果有錯誤發生,fs將會拋出異常,你需要使用try和catch捕捉並處理異常。

fs.open

fs.read

一般來說,除非必要,否則不要使用以上兩種方式讀取文件,因為它要求你手動管理緩沖區和文件指針,尤其是在你不知道文件大小的時候,這將會是一件很麻煩的事情。

佛山vi設計https://www.houdianzi.com/fsvi/ 豌豆資源搜索大全https://55wd.com

Http 模塊

http 模塊主要用於搭建 http 服務,處理用戶請求信息等

使用 http 請求

const http = require('http'); // 使用發送http請求 const options = { protocol: 'http:', hostname: 'www.baidu.com', port: '80', method: 'GET', path: '/img/baidu_85beaf5496f291521eb75ba38eacbd87.svg' }; let responseData = ''; const request = http.request(options, response => { console.log(response.statusCode); // 獲取鏈接請求的狀態碼 response.setEncoding('utf8'); response.on('data', chunk => { responseData += chunk; }); response.on('end', () => { console.log(responseData); }); }); request.on('error', error => { console.log(error); }); request.end();

使用 http 創建服務

// 使用http創建服務器 const port = 3000; const host = '127.0.0.1'; const server = http.createServer(); server.on('request', (request, response) => { response.writeHead(200, { 'Content-Type': 'text/plain' }); response.end('Hello World\n'); }); server.listen(port, host, () => { console.log(`Server running at http://${host}:${port}/`); });

關於 Node 核心模塊還有很多,比如 Buffer、crypto加密、stream的使用、net網絡、os操作系統等等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM