- 第1节:Node.js 教程
- 第2节:Node.js 安装配置
- 第3节:Node.js 创建第一个应用
- 第4节:Node.js NPM 使用介绍
- 第5节:Node.js REPL(交互式解释器)
- 第6节:Node.js 回调函数
- 第7节:Node.js 事件循环
- 第8节:Node.js EventEmitter
- 第9节:Node.js Buffer(缓冲区)
- 第10节:Node.js Stream(流)
- 第11节:Node.js 模块系统
- 第12节:Node.js 函数
- 第13节:Node.js 路由
- 第14节:Node.js 全局对象
- 第15节:Node.js 常用工具util
- 第16节:Node.js 文件系统
- 第17节:Node.js GET/POST请求
- 第18节:Node.js 工具模块
- 第19节:Node.js Web 模块
- 第20节:Node.js Express 框架
- 第21节:Node.js RESTful API
- 第22节:Node.js 多进程
- 第23节:Node.js JXcore 打包
- 第24节:Node.js 连接 MySQL
- 第25节:Node.js 连接 MongoDB
- 第26节:关于 Node.js
- 第27节:Node.js 示例
- 第28节:Node.js 断言测试
- 第29节:Node.js 事件
- 第30节:Node.js Punycode
- 第31节:Node.js Buffer
- 第32节:Node.js 文件系统
- 第33节:Node.js Query Strings
- 第34节:Node.js C/C++ 插件
- 第35节:Node.js 逐行读取
- 第36节:Node.js 全局对象
- 第37节:Node.js 子进程
- 第38节:Node.js REPL
- 第39节:Node.js HTTP
- 第40节:Node.js 集群
- 第41节:Node.js Smalloc
- 第42节:Node.js HTTPS
- 第43节:Node.js 控制台
- 第44节:Node.js 模块
- 第45节:Node.js 加密
- 第46节:Node.js 流
- 第47节:Node.js 网络
- 第48节:Node.js 调试器
- 第49节:Node.js 字符串解码器
- 第50节:Node.js 系统
- 第51节:Node.js DNS
- 第52节:Node.js 定时器
- 第53节:Node.js 路径
- 第54节:Node.js 域
- 第55节:Node.js TLS/SSL
- 第56节:Node.js 进程
- 第57节:Node.js TTY
- 第58节:Node.js UDP/Datagram
- 第59节:Node.js URL
- 第60节:Node.js 实用工具
- 第61节:Node.js 虚拟机
- 第62节:Node.js ZLIB
Node.js 全局对象
在Node.js中我们可以直接访问到全局对象。
这些对象在所有模块里都是可用的,有些对象不是在全局作用域而是在模块作用域里,这些情况将在本文的内容中进行介绍。
global
- {Object} 全局命名空间对象。
在浏览器中,全局作用域就是顶级域。如果在全局域内定义变量var something
将会是全局变量。而在Node中,顶级域并不是全局域;在模块里定义变量 var something
只是模块内可用。
process
- {Object}
进程对象。参见process object章节.
console
- {Object}
用来打印stdout和stderr。参见console章节.
Class: Buffer
- {Function}
用来处理二进制数据。参见buffer 章节。
require()
- {Function}
引入模块。参见Modules章节。require
实际上并非全局的,而是各个本地模块有效。
require.resolve()
使用内部require()
机制来查找module位置,但是不加载模块,只是返回解析过的文件名。
require.cache
- {Object}
引入模块时会缓存到这个对象。通过删除该对象键值,下次调用require
将会重载该模块。
require.extensions
稳定性: 0 - 抛弃
- {Object}
指导require
如何处理特定的文件扩展名。
将.sjs
文件当作.js
文件处理:
require.extensions['.sjs'] = require.extensions['.js'];
抛弃 以前这个列表用来加载按需编译的非JavaScript模块到node。实际上,有更好的办法来解决这个问题,比如通过其他node程序来加载模块,或者提前编译成 JavaScript。
由于模块系统已经锁定,该功能可能永远不会去掉。改动它可能会产生bug,所以最好不要动它。
__filename
- {String}
被执行的代码的文件名是相对路径。对于主程序来说,这和命令行里未必用同一个文件名。模块里的值是模块文件的路径。
列如,运行/Users/mjr
里的node example.js
:
console.log(__filename);
// /Users/mjr/example.js
__filename
不是全局的,而是模块本地的。
__dirname
- {String}
执行的script代码所在的文件夹的名字。
列如,运行/Users/mjr
里的node example.js
:
console.log(__dirname);
// /Users/mjr
__dirname
不是全局的,而是模块本地的。
module
- {Object}
当前模块的引用。通过require()
,module.exports
定义了哪个模块输出可用。
module
不是全局的,而是模块本地的。
更多信息参见module system documentation。
exports
module.exports
的引用。关于什么时候使用exports
和module.exports
,可以参考module system documentation。
module
不是全局的,而是模块本地的。
更多信息参见module system documentation。
更多信息参见module 章节。
setTimeout(cb, ms)
最少在ms
毫秒后调回调函数。实际的延迟依赖于外部因素,比如操作系统的粒度和负载。
timeout值有效范围为1-2,147,483,647。如果超过该范围,将会变为1毫秒。通常,定时器不应该超过24.8天。
返回一个代表定时器的句柄值。
clearTimeout(t)
停止一个之前通过setTimeout()
创建的定时器。不会再被执行回调。
setInterval(cb, ms)
每隔ms
毫秒调用回调函数cb
。实际的间隔依赖于外部因素,比如操作系统的粒度和系统负载。通常会大于ms
。
间隔值的有效范围在1-2,147,483,647。如果超过该范围,将会变为1毫秒。通常,定时器不应该超过24.8天。
返回一个代表该定时器的句柄值。
clearInterval(t)
停止一个之前通过setInterval()
创建的定时器。不会再被执行回调。
timer函数是全局变量。参见timers章节。