node.js核心模塊有哪些
全局對象
在瀏覽器JS中,通常window是全局對象,而nodejs中的全局對象是global,所有全局變量都是global對象的屬性。
在nodejs中能夠直接訪問到的對象通常都是global的屬性,如console、 process等
全局對象與全局變量
global最根本的作用是作為全局變量的宿主。
全局變量的條件:
在最外層定義的變量;全局對象的屬性;隱式定義的變量(未定義直接賦值的變量)
定義一個全局變量,同時也是全局對象的屬性。
永遠使用var定義變量以避免引入全局變量,因為全局變量會污染命名空間,提高代碼的耦合風險。
process
process是一個全局變量,即global對象的屬性。它用于描述nodejs進程狀態(tài)的對象,提供一個與操作系統(tǒng)的簡單接口。
process.argv是命令行參數(shù)數(shù)組,第一個元素是node, 第二個是腳本文件名,從第三個開始每個元素是一個運行參數(shù)。
console.log(process.argv);
process.stdout是標準輸出流。
process.stdin是標準輸入流。
process.nextTick(callback)的功能是為事件循環(huán)設置一項任務,會在下次事件循環(huán)調(diào)響應時調(diào)用callback
還有process.platform, process.pid, process.execPath, process.memoryUsage()等。posix進程信號響應機制。
console
用于提供控制臺標準輸出。
- console.log()
- console.error()
- console.trace()
常用工具util
util是一個Node.js核心模塊,提供常用函數(shù)的集合,用于彌補核心js的功能過于精簡的不足。
util.inherits實現(xiàn)對象間原型繼承的函數(shù)。js面向?qū)ο筇匦允腔谠偷摹?/p>
util.inspect將任意對象轉(zhuǎn)換為字符串的方法。
util.isArray(), util.isRegExp(), util.isDate(), util.isError(), util.format(), util.debug()等
事件機制events--Events模塊
events是NodeJs最重要的模塊。NodeJs本身架構就是事件式的,而它提供了唯一的接口,所以堪稱NodeJs事件編程的基石。
事件發(fā)射器
events模塊只提供一個對象events.EventEmitter.它核心就是事件發(fā)射與事件監(jiān)控器功能的封裝。
EventEmitter常用的API:
- EventEmitter.on(event, listener)為指定事件注冊一個監(jiān)聽器,接受一個字符串event和一個回調(diào)函數(shù)listener。
- EventEmitter.emit(event, [arg1], [arg2], [...])發(fā)射event事件,傳遞若干可選參數(shù)到事件監(jiān)聽器的參數(shù)表。
- EventEmitter.once(event, listener)為指定事件注冊一個單次監(jiān)聽器,即監(jiān)聽器最多只會觸發(fā)一次,觸發(fā)后立刻解除該監(jiān)聽
- EventEmitter.removeListener(event, listener)移除指定事件的某個監(jiān)聽器,listener必須是該事件已經(jīng)注冊過的監(jiān)聽器。
- EventEmitter.removeAllListeners([event])移除所有事件的所有監(jiān)聽器,如果指定event,則移除指定事件的所有監(jiān)聽器。
error事件
遇到異常的時候,通常會發(fā)射error事件。
繼承EventEmitter
不會直接使用EventEmitter, 而是在對象中繼承它。包括fs, net, http在內(nèi),只要是支持事件響應的核心模塊都是EventEmitter的子類。
文件系統(tǒng)fs--fs模塊
文件操作的封裝,提供了文件的讀取、寫入、更名、刪除、遍歷目錄、鏈接等posix文件系統(tǒng)操作。有異步和同步兩個版本。
fs.readFile(filename, [encoding], [callback(err, data)])是最簡單的讀取文件的函數(shù)。
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同步的版本。它接受的參數(shù)和fs.readFile相同,而讀取到的文件內(nèi)容會以函數(shù)返回值的形式返回。如果有錯誤發(fā)生,fs將會拋出異常,你需要使用try和catch捕捉并處理異常。
fs.open
fs.read
一般來說,除非必要,否則不要使用以上兩種方式讀取文件,因為它要求你手動管理緩沖區(qū)和文件指針,尤其是在你不知道文件大小的時候,這將會是一件很麻煩的事情。
Http 模塊
http 模塊主要用于搭建 http 服務,處理用戶請求信息等
使用 http 請求
const http = require('http');
// 使用發(fā)送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); // 獲取鏈接請求的狀態(tài)碼
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 創(chuàng)建服務
// 使用http創(chuàng)建服務器
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網(wǎng)絡、os操作系統(tǒng)等等。
以上就是node.js核心模塊有哪些的詳細內(nèi)容,更多關于node.js核心模塊的資料請關注腳本之家其它相關文章!
相關文章
前端之npm運行時配置文件.npmrc的方法(可用于配置npm淘寶源)
這篇文章主要給大家介紹了關于前端之npm運行時配置文件.npmrc(可用于配置npm淘寶源)的相關資料,.npmrc 文件是用于配置 npm(Node.js 包管理器)行為的配置文件,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-07-07
Nest.js中使用HTTP五種數(shù)據(jù)傳輸方式小結
本文主要介紹了Nest.js中使用HTTP五種數(shù)據(jù)傳輸方式小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-05-05
nodejs簡單實現(xiàn)TCP服務器端和客戶端的聊天功能示例
這篇文章主要介紹了nodejs簡單實現(xiàn)TCP服務器端和客戶端的聊天功能,結合實例形式分析了nodejs基于TCP協(xié)議實現(xiàn)的聊天程序客戶端與服務器端具體步驟與相關操作技巧,代碼備有較為詳盡的注釋便于理解,需要的朋友可以參考下2018-01-01

