Node.js的全局对象和全局变量

1、全局对象

所有模块都可以调用

1)global:表示Node所在的全局环境,类似于浏览器中的window对象。

2)process:指向Node内置的process模块,允许开发者与当前进程互动。

例如你在DOS或终端窗口直接输入node,就会进入NODE的命令行方式(REPL环境)。退出要退出的话,可以输入 process.exit();

3)console:指向Node内置的console模块,提供命令行环境中的标准输入、标准输出功能。

通常是写console.log(),无须多言

2、全局函数:

1)定时器函数:共有4个,分别是setTimeout(), clearTimeout(), setInterval(), clearInterval()。
2)require:用于加载模块。

3、全局变量:

1)_filename:指向当前运行的脚本文件名。

2)_dirname:指向当前运行的脚本所在的目录。

4、准全局变量

模块内部的局部变量,指向的对象根据模块不同而不同,但是所有模块都适用,可以看作是伪全局变量,主要为module, module.exports, exports等。

module变量指代当前模块。module.exports变量表示当前模块对外输出的接口,其他文件加载该模块,实际上就是读取module.exports变量。

module.id 模块的识别符,通常是模块的文件名。
module.filename 模块的文件名。
module.loaded 返回一个布尔值,表示模块是否已经完成加载。
module.parent 返回使用该模块的模块。

module.children 返回一个数组,表示该模块要用到的其他模块。

这里需要特别指出的是,exports变量实际上是一个指向module.exports对象的链接,等同在每个模块头部,有一行这样的命令。

var exports = module.exports;

这造成的结果是,在对外输出模块接口时,可以向exports对象添加方法,但是不能直接将exports变量指向一个函数:

exports = function (x){ console.log(x);};

上面这样的写法是无效的,因为它切断了exports与module.exports之间的链接。但是,下面这样写是可以的。


  1. exports.area = function (r) {
  2. return Math.PI * r * r;
  3. };
  4. exports.circumference = function (r) {
  5. return 2 * Math.PI * r;
  6. };

如果你觉得,exports与module.exports之间的区别很难分清,一个简单的处理方法,就是放弃使用exports,只使用module.exports。

时间: 2024-08-06 11:56:32

Node.js的全局对象和全局变量的相关文章

Node.js:全局对象

概要:本篇博客主要介绍了node.js中的全局对象. 在JavaScript中,通常window是全局对象,而node.js中的全局对象是global,所有全局变量(除了global本身之外)都是global对象的属性.如:console.process. 1.全局对象与全局变量 global最根本的作用是作为全局变量的宿主.满足以下条件: ●在最外层定义的变量: ● 全局对象的属性: ● 隐式定义的变量(未定义直接赋值的变量). 2.process process是一个全局变量,即global

Node中的全局对象和全局变量

这个文章主要是对上一个文章的扩充 util对象 在Node环境已经安装好的前提下,使用util中已经定义的方法,只需要require('util')即可: uti是utility(功效,用途)的缩写.这util模块的设计主要是为了满足Node内部API的需求.下面来介绍两个比较重要的: 1.inherits 这个方法实现了原型链之间的继承(即JavaScript的继承) var util = require('util'); function base(){ this.name = 'helio

nodejs学习笔记 -- 全局对象与全局变量

全局对象 在浏览器Javascript中,window是全局对象,而Node.js中全局对象是global,所有全局变量(除了global本身以外)都是global对象的属性. 在Node.js中,我们可以直接访问到global的属性,而不需要在应用中包含它. 全局变量 global 最根本的作用是作为全局变量的宿主.按照 ECMAScript 的定义,满足以下条 件的变量是全局变量: 1.在最外层定义的变量: 2.全局对象的属性: 3.隐式定义的变量(未定义直接赋值的变量). 定义一个全局变量

Angular.JS 之 全局对象变更的实时响应

AngularJS是一款来自Google的前端JS框架,体积非常小,但是设计理念和功能却非常强大. 教程 AngularJS中文社区 问题 在一款Web应用中,虽然我们尽可能的避免无节制地使用全局变量,但有时确实需要一些全局变量的存在已保证在所有页面中都能处理某些事件. 在本文的例子中,该应用需要在安卓平台上接收手机短信并实时响应(此处先撇开具体的实现插件,接收和发送短信都用控制台来模拟),为此我们定义了一个JavaScript的全局对象如下: 1 var native_accessor = {

Node.js HTTP Server对象及GET、POST请求

上一博客学习了请求与响应,2次读2次写,但有一个问题就是客户端写入的时候怎么知道请求到达.所以HTTP Server对象出现了.它提供了实现HTTP服务器的基本框架.它可以监听端口的底层套接字和接收请求,然后发送响应给客户端连接的处理程序. 它提供了一下几个事件: request:当服务器收到客户端请求时触发.例如:function callback(request,response){}. connection:当一个新的TCP流建立时触发.例如:function callback (sock

Node中的全局对象

global global顶级对象,类似于浏览器中的window 在任何地方可以直接使用,不需要导包 setTimeout/setImmediate/process.nextTick,异步的时候setTimeout的优先级高于setImmediate,process.nextTick优先级最高 setInterval 在REPL环境中定义的变量直接挂载到global中 在js文件中定义的变量不会挂载到global中 获取路径 __dirname 当前执行的js所在的文件夹 __filename

Node.js的Path对象

NodeJS中的Path对象,用于处理目录的对象,提高开发效率.用NodeJS的Path命令,与使用Linux下的shell脚本命令相似.引入path对象: var path = require('path'); 比较实用的方法: 格式化路径 path.normalize(p)特点:将不符合规范的路径格式化,简化开发人员中处理各种复杂的路径判断 示例: path.normalize('/foo/bar//baz/asdf/quux/..'); => '/foo/bar/baz/asdf' 路径合

Node.js模块导入导出

这篇文章本来是想模块导入导出和事件循环一起写的,但是感觉一起写的话会太长了,所以就分开两篇文章写吧.下一篇会重点介绍一下js中的事件循环,js代码到底是以何种顺序去执行的呢?我相信你看懂了事件循环再去看node对你的帮助是非常大的. 讲模块系统之前先认识一下node.js中的全局对象. node.js的全局对象 众所周知的是在浏览器中的老大哥是谁,它就是window,this指向的也是window,那么在node中的全局对象就不是window了,而是global,可以在命令行中去看一下,想学习n

Node.js 全局对象

JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量. 在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对象的属性. 在 Node.js 我们可以直接访问到 global 的属性,而不需要在应用中包含它. 全局对象与全局变量 global 最根本的作用是作为全局变量的宿主.按照