一文詳解node.js有哪些全局對象呢
一、是什么
在瀏覽器 JavaScript
中,通常window
是全局對象, 而 Nodejs
中的全局對象是 global
在NodeJS
里,是不可能在最外層定義一個變量,因為所有的用戶代碼都是當(dāng)前模塊的,只在當(dāng)前模塊里可用,但可以通過exports
對象的使用將其傳遞給模塊外部
所以,在NodeJS
中,用var
聲明的變量并不屬于全局的變量,只在當(dāng)前模塊生效
像上述的global
全局對象則在全局作用域中,任何全局變量、函數(shù)、對象都是該對象的一個屬性值
二、有哪些
將全局對象分成兩類:
- 真正的全局對象
- 模塊級別的全局變量
真正的全局對象
下面給出一些常見的全局對象:
- Class:Buffer
- process
- console
- clearInterval、setInterval
- clearTimeout、setTimeout
- global
Class:Buffer
可以處理二進(jìn)制以及非Unicode
編碼的數(shù)據(jù)
在Buffer
類實例化中存儲了原始數(shù)據(jù)。Buffer
類似于一個整數(shù)數(shù)組,在V8堆原始存儲空間給它分配了內(nèi)存
一旦創(chuàng)建了Buffer
實例,則無法改變大小
process
進(jìn)程對象,提供有關(guān)當(dāng)前進(jìn)程的信息和控制
包括在執(zhí)行node
程序進(jìn)程時,如果需要傳遞參數(shù),我們想要獲取這個參數(shù)需要在process
內(nèi)置對象中
啟動進(jìn)程:
node index.js 參數(shù)1 參數(shù)2 參數(shù)3
index.js文件如下:
process.argv.forEach((val, index) => { console.log(`${index}: ${val}`); });
輸出如下:
/usr/local/bin/node
/Users/mjr/work/node/process-args.js
參數(shù)1
參數(shù)2
參數(shù)3
除此之外,還包括一些其他信息如版本、操作系統(tǒng)等
console
用來打印stdout
和stderr
最常用的輸入內(nèi)容的方式:console.log
console.log("hello");
清空控制臺:console.clear
console.clear
打印函數(shù)的調(diào)用棧:console.trace
function test() { demo(); } function demo() { foo(); } function foo() { console.trace(); } test();
clearInterval、setInterval
設(shè)置定時器與清除定時器
setInterval(callback, delay[, ...args])
callback
每delay
毫秒重復(fù)執(zhí)行一次
clearInterval
則為對應(yīng)發(fā)取消定時器的方法
clearTimeout、setTimeout
設(shè)置延時器與清除延時器
setTimeout(callback,delay[,...args])
callback
在delay
毫秒后執(zhí)行一次
clearTimeout
則為對應(yīng)取消延時器的方法
global
全局命名空間對象,墻面講到的process
、console
、setTimeout
等都有放到global
中
console.log(process === global.process) // true
模塊級別的全局對象
這些全局對象是模塊中的變量,只是每個模塊都有,看起來就像全局變量,像在命令交互中是不可以使用,包括:
- __dirname
- __filename
- exports
- module
- require
__dirname
獲取當(dāng)前文件所在的路徑,不包括后面的文件名
從 /Users/mjr
運行 node example.js
:
console.log(__dirname); // 打印: /Users/mjr
__filename
獲取當(dāng)前文件所在的路徑和文件名稱,包括后面的文件名稱
從 /Users/mjr
運行 node example.js
:
console.log(__filename); // 打印: /Users/mjr/example.js
exports
module.exports
用于指定一個模塊所導(dǎo)出的內(nèi)容,即可以通過 require()
訪問的內(nèi)容
exports.name = name; exports.age = age; exports.sayHello = sayHello;
module
對當(dāng)前模塊的引用,通過module.exports
用于指定一個模塊所導(dǎo)出的內(nèi)容,即可以通過 require()
訪問的內(nèi)容
require
用于引入模塊、 JSON
、或本地文件。 可以從 node_modules
引入模塊。
可以使用相對路徑引入本地模塊或JSON
文件,路徑會根據(jù)__dirname
定義的目錄名或當(dāng)前工作目錄進(jìn)行處理
到此這篇關(guān)于一文詳解node.js有哪些全局對象呢的文章就介紹到這了,更多相關(guān)node.js全局對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
node.js使用express框架進(jìn)行文件上傳詳解
在本篇內(nèi)容里小編給大家整理了關(guān)于node.js使用express框架進(jìn)行文件上傳的相關(guān)知識點內(nèi)容,有需要的朋友們跟著學(xué)習(xí)下。2019-03-03基于promise.js實現(xiàn)nodejs的promises庫
promise是JavaScript實現(xiàn)優(yōu)雅編程的一個非常不錯的輕量級框架。該框架可以讓你從雜亂的多重異步回調(diào)代碼中解脫出來,并把精力集中到你的業(yè)務(wù)邏輯上。2014-07-07