node.js核心模塊有哪些
全局對(duì)象
在瀏覽器JS中,通常window是全局對(duì)象,而nodejs中的全局對(duì)象是global,所有全局變量都是global對(duì)象的屬性。
在nodejs中能夠直接訪問(wèn)到的對(duì)象通常都是global的屬性,如console、 process等
全局對(duì)象與全局變量
global最根本的作用是作為全局變量的宿主。
全局變量的條件:
在最外層定義的變量;全局對(duì)象的屬性;隱式定義的變量(未定義直接賦值的變量)
定義一個(gè)全局變量,同時(shí)也是全局對(duì)象的屬性。
永遠(yuǎn)使用var定義變量以避免引入全局變量,因?yàn)槿肿兞繒?huì)污染命名空間,提高代碼的耦合風(fēng)險(xiǎn)。
process
process是一個(gè)全局變量,即global對(duì)象的屬性。它用于描述nodejs進(jìn)程狀態(tài)的對(duì)象,提供一個(gè)與操作系統(tǒng)的簡(jiǎn)單接口。
process.argv是命令行參數(shù)數(shù)組,第一個(gè)元素是node, 第二個(gè)是腳本文件名,從第三個(gè)開始每個(gè)元素是一個(gè)運(yùn)行參數(shù)。
console.log(process.argv);
process.stdout是標(biāo)準(zhǔn)輸出流。
process.stdin是標(biāo)準(zhǔn)輸入流。
process.nextTick(callback)的功能是為事件循環(huán)設(shè)置一項(xiàng)任務(wù),會(huì)在下次事件循環(huán)調(diào)響應(yīng)時(shí)調(diào)用callback
還有process.platform, process.pid, process.execPath, process.memoryUsage()等。posix進(jìn)程信號(hào)響應(yīng)機(jī)制。
console
用于提供控制臺(tái)標(biāo)準(zhǔn)輸出。
- console.log()
- console.error()
- console.trace()
常用工具util
util是一個(gè)Node.js核心模塊,提供常用函數(shù)的集合,用于彌補(bǔ)核心js的功能過(guò)于精簡(jiǎn)的不足。
util.inherits實(shí)現(xiàn)對(duì)象間原型繼承的函數(shù)。js面向?qū)ο筇匦允腔谠偷摹?/p>
util.inspect將任意對(duì)象轉(zhuǎn)換為字符串的方法。
util.isArray(), util.isRegExp(), util.isDate(), util.isError(), util.format(), util.debug()等
事件機(jī)制events--Events模塊
events是NodeJs最重要的模塊。NodeJs本身架構(gòu)就是事件式的,而它提供了唯一的接口,所以堪稱NodeJs事件編程的基石。
事件發(fā)射器
events模塊只提供一個(gè)對(duì)象events.EventEmitter.它核心就是事件發(fā)射與事件監(jiān)控器功能的封裝。
EventEmitter常用的API:
- EventEmitter.on(event, listener)為指定事件注冊(cè)一個(gè)監(jiān)聽器,接受一個(gè)字符串event和一個(gè)回調(diào)函數(shù)listener。
- EventEmitter.emit(event, [arg1], [arg2], [...])發(fā)射event事件,傳遞若干可選參數(shù)到事件監(jiān)聽器的參數(shù)表。
- EventEmitter.once(event, listener)為指定事件注冊(cè)一個(gè)單次監(jiān)聽器,即監(jiān)聽器最多只會(huì)觸發(fā)一次,觸發(fā)后立刻解除該監(jiān)聽
- EventEmitter.removeListener(event, listener)移除指定事件的某個(gè)監(jiān)聽器,listener必須是該事件已經(jīng)注冊(cè)過(guò)的監(jiān)聽器。
- EventEmitter.removeAllListeners([event])移除所有事件的所有監(jiān)聽器,如果指定event,則移除指定事件的所有監(jiān)聽器。
error事件
遇到異常的時(shí)候,通常會(huì)發(fā)射error事件。
繼承EventEmitter
不會(huì)直接使用EventEmitter, 而是在對(duì)象中繼承它。包括fs, net, http在內(nèi),只要是支持事件響應(yīng)的核心模塊都是EventEmitter的子類。
文件系統(tǒng)fs--fs模塊
文件操作的封裝,提供了文件的讀取、寫入、更名、刪除、遍歷目錄、鏈接等posix文件系統(tǒng)操作。有異步和同步兩個(gè)版本。
fs.readFile(filename, [encoding], [callback(err, data)])是最簡(jiǎn)單的讀取文件的函數(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)容會(huì)以函數(shù)返回值的形式返回。如果有錯(cuò)誤發(fā)生,fs將會(huì)拋出異常,你需要使用try和catch捕捉并處理異常。
fs.open
fs.read
一般來(lái)說(shuō),除非必要,否則不要使用以上兩種方式讀取文件,因?yàn)樗竽闶謩?dòng)管理緩沖區(qū)和文件指針,尤其是在你不知道文件大小的時(shí)候,這將會(huì)是一件很麻煩的事情。
Http 模塊
http 模塊主要用于搭建 http 服務(wù),處理用戶請(qǐng)求信息等
使用 http 請(qǐng)求
const http = require('http'); // 使用發(fā)送http請(qǐng)求 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); // 獲取鏈接請(qǐng)求的狀態(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)建服務(wù)
// 使用http創(chuàng)建服務(wù)器 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}/`); });
關(guān)于 Node 核心模塊還有很多,比如 Buffer、crypto加密、stream的使用、net網(wǎng)絡(luò)、os操作系統(tǒng)等等。
以上就是node.js核心模塊有哪些的詳細(xì)內(nèi)容,更多關(guān)于node.js核心模塊的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
nodejs腳本centos開機(jī)啟動(dòng)實(shí)操方法
在本篇文章里小編給大家整理的是關(guān)于nodejs腳本centos開機(jī)啟動(dòng)實(shí)操方法,有興趣的朋友們參考下。2020-03-03NodeJS配置CORS實(shí)現(xiàn)過(guò)程詳解
這篇文章主要介紹了NodeJS配置CORS實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12Nodejs監(jiān)聽日志文件的變化的過(guò)程解析
最近有在做日志文件的分析,其中有一個(gè)需求:A服務(wù)器項(xiàng)目需要用Nodejs監(jiān)聽日志文件的變化,當(dāng)項(xiàng)目產(chǎn)生了新的日志信息,將新的部分通過(guò)socket傳輸?shù)紹服務(wù)器項(xiàng)目,本文重點(diǎn)給大家介紹Nodejs監(jiān)聽日志文件的變化的相關(guān)知識(shí),一起看看吧2019-08-08NodeJs Express框架操作MongoDB數(shù)據(jù)庫(kù)執(zhí)行方法講解
MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bjson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型2023-01-01關(guān)于Sequelize連接查詢時(shí)inlude中model和association的區(qū)別詳解
這篇文章主要介紹了關(guān)于Sequelize連接查詢時(shí)inlude中model與association的區(qū)別,文中介紹的很詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-02-02