微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Node.js 的 Global全局对象

模块分2种,1)基于commonjs规范编写的普通模块,前面已经讲过,2)Global全局对象,即无需引用就可以直接使用的对象,本节主要讲第二种。另外,需要注意的是全局对象和global关键字的区别。

内置全局对象

内置全局对象指的的是在所有模块里无需引用就可以使用的模块。

具体如下

34567911
编号 对象 描述
1 Buffer 数据类型
2 __dirname 当前文件目录
__filename 当前文件名称
console 控制台输出模块
exports commonjs关键字
global 共享的全局对象
module 8 process 当前node进程对象
require()、require.cache、require.extensions、require.resolve() 10 setImmediate(callback[,…args]) event loop相关api
setInterval(callback,delay[,204); padding: 6px 13px;">12 setTimeout(callback,204); padding: 6px 13px;">13 clearImmediate(immediateObject) 14 clearInterval(intervalObject) 15 clearTimeout(timeoutObject) event loop相关api

具体分类如下

1)模块包装而暴露的


下面的关键字都是全局的,虽然这样被注入进来的,只能单文件生效

  • exports

  • require、require.cache、require.extensions、require.resolve()

  • module

  • __filename

  • __dirname

2)内置process模块

在第5章《Node.js是如何执行的》里有针对process模块的详细介绍。作为核心模块,它是对当前Node现场各种信息的绑定,作为全局模块,是一个极其明智的选择,Java8借鉴了这种实现。

3)控制台console模块

比如我们常用的console.log(),在js语言里有实现,在node又单独实现了一次,原因是在node需要在终端输出,这和在浏览器里的行为是不一样的。在lib/console.js

它是在lib/internal/bootstrap_node.js里被绑定为全局对象的。

4)针对event loop相关api的实现

主要是setImmediate、setInterval、setTimeout和对应的clear方法实现。其实大家也可以想想,如果想对event loop的队列进行操作,做成全局模块是非常方便的。

除了上述4种类型外,还有特定类型 Bufferglobal 对象,后面会分别进行讲解。


全文完

欢迎关注Cnode官方公众号【node全栈】

如果想参与评论,请点击阅读原文链接,进入国内最专业的cnode论坛

你身边如果有朋友对Node.js或全栈感兴趣,可以转发给他们看看哦,O(∩_∩)O先谢过

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐