node学习02--常见的全局对象
一、常见的全局对象
1.全局对象的定义
- 全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。
- 在浏览器JavaScript中,通常
window
是全局对象 - 在Node.js中,全局对象是
global
,所有的全局对象都是global
对象的属性。
控制台打印的global
<ref *1> Object [global] {
global: [Circular *1],
clearInterval: [Function: clearInterval],
clearTimeout: [Function: clearTimeout],
setInterval: [Function: setInterval],
setTimeout: [Function: setTimeout] {
[Symbol(nodejs.util.promisify.custom)]: [Getter]
},
queueMicrotask: [Function: queueMicrotask],
performance: Performance {
nodeTiming: PerformanceNodeTiming {
name: 'node',
entryType: 'node',
startTime: 0,
duration: 26.296499997377396,
nodeStart: 0.5467000007629395,
v8Start: 1.967500001192093,
bootstrapComplete: 19.882200002670288,
environment: 9.948199987411499,
loopStart: -1,
loopExit: -1,
idleTime: 0
},
timeOrigin: 1669688619386.091
},
clearImmediate: [Function: clearImmediate],
setImmediate: [Function: setImmediate] {
[Symbol(nodejs.util.promisify.custom)]: [Getter]
}
}
2.特殊的全局变量
__dirname
输出当前目录__filename
输出当前文件的目录,及文件名
exports
module
require()
这些全局对象实际上模块中的变量,只是每个模块都有,看起来像是全局变量。
在命令行交互中是不可以使用的。
setTimeout(cb, ms)
全局函数在指定的毫秒(ms)数后执行指定函数(cb)。:setTimeout() 只执行一次指定函数。clearTimeout(t)
全局函数用于停止一个之前通过 setTimeout() 创建的定时器。 参数t
是通过 setTimeout() 函数创建的定时器。setInterval(cb, ms)
全局函数在指定的毫秒(ms)数后执行指定函数(cb),这个函数可以使用clearInterval()函数来清除。console
:提供简单的调试控制台,用于向标准输出流(stdout)或标准错误流(stderr)输出字符。process
:process提供了Node进程中相关的信息, 即 global 对象的属性,用于描述当前Node.js 进程状态的对象,提供了一个与操作系统的简单接口。
二、模块化开发
1.CommonJS
CommonJS
是一个规范,简称为CJS
Node
是CommonJS
在服务器端一个具有代表性的实现,Node
中对CommonJS
进行了支持和实现,让我们在开发node的过程中可以方便的进行模块化开发- 在
Node
中每一个js
文件都是一个单独的模块; - 这个模块中包括
CommonJS
规范的核心变量:exports
、module.exports
、require
- 我们可以使用这些变量来方便的进行模块化开发
模块化的核心是导入和导出
- exports和module.exports可以负责对模块中的内容进行导出
- require函数可以帮助我们导入其他模块(自定义模块、系统模块、第三方库模块)中的内容
exports 和 module.exports 的使用
- 如果要对外暴露属性或方法,就用 exports 就行,要暴露对象(类似class,包含了很多属性和方法),就用 module.exports。
- 不建议同时使用 exports 和 module.exports。
- 如果先使用 exports 对外暴露属性或方法,再使用 module.exports 暴露对象,会使得 exports 上暴露的属性或者方法失效。
三、require细节
1.require('X')的查找规范
情况一 像http fs这种内置模块,直接返回核心模块
情况二 X是以./或../开头的。
-
如果有后缀名,按照后缀名的格式查找对应的文件;
-
如果没有后缀名,
- 直接查找文件X
- 查找X.js文件
- 查找X.json文件
- 查找X.node文件
-
如果灭找到对应的文件,将X作为一个目录
查找目录下的index文件
- 查找X/index.js文件
- 查找X/index.json文件
- 查找X/index.node文件
情况三 在node_moudles文件夹中查找
四、exports导出方式
方式一
exports = {
name:'mwf'
}
module.exports = exports
方式二
module.exports={
name:'mwf'
}
exports = module.exports
最终目的都是让他们两个指向同一个对象
五、ES Module
代码成就万世基积沙镇海
梦想永在凌云意意气风发