转载: http://www.sjsjw.com/kf_cloud/article/161_12953_7225.asp
如果你正在使用一系列node模块,或许是一个像Express.js一样的框架,突然需要使用几个全局变量。怎样在nodejs里创建全局变量呢?
对此最常见的建议是“不使用‘var’关键字声明一个变量”或“给object对象添加一个变量”或“给OBJECT对象添加一个变量”。你会使用哪种方式呢?
首先,让我们分析下global对象。打开一个终端,启动一个node命令提示界面:
$ node >
在命令提示界面下看看关于global的所有信息:
> global
飞天怪物的神圣母亲!!!那是一个超级大的对象!事实上,你看到了node的核心。所有在node进程里的对象都挂在这个对象上。如果你非常熟悉javascript所在的浏览器环境,global对象是等同于window对象。
现在我们已经指导global对象是声明,让我们把玩下它:
> global.name undefined > global.name = 'El Capitan' > global.name 'El Capitan' > GLOBAL.name 'El Capitan' > delete global.name true > GLOBAL.name undefined > name = 'El Capitan' 'El Capitan' > global.name 'El Capitan' > GLOBAL.name 'El Capitan' > var name = 'Sparrow' undefined > global.name 'Sparrow'
令人兴奋的观察!
global和BLOBAL看起来是一个同一个东西且是一回事。确实,Global是global一个别名。
令我们超感兴趣的是一个使用还是不使用var关键字声明的变量附加到global对象上。在node里创建一个全局变量的最基本的方式就是通过不使用var关键字声明一个变量。这种做法与使用一个模块(module)略有不同,接下来我讲解释它。
当你启动一个node进程,将会启动一个模块,那么所有的模块将会被包含在它里面,所有模块都共享同一个global对象。应用上面的测试观察结合实 际,你就会明白全局变量怎样在node里工作。然而有些轻微的变化,如果使用var关键字声明的变量将会保留在本地模块里;这些声明的变量没有附加到 global对象里。
那么现在你已经知道”没有使用var关键字声明的变量“,”向global里添加一个变量“,”给GLOBAL对象添加一个变量“,所有这些都是一回事。
在一个module里全局声明的变量能够被其他任何模块使用它们的名字来引用,没必要从global对象引用它们。但是这不意味这你就可以这样做。为什么呢?请看这样:
var company = 'Yahoo'; console.log(global.company); // 'Google' console.log(company); // 'Yahoo'
当你使用global.company时,你知道你使用的是全局变量,但是它的备用名字company在module是当作局部变量来使用的。
如果你打算在你的node应用里使用全局变量,那么我们讨论的创建变量方法会工作的很好。然而,请不要过度使用它。话虽如此,还有可以不使用全局对象的替代解决方案吗?
是的,有这么一个,它涉及到module.exports的使用。让我使用例子来演示:
File: main.js
exports.company = 'Google'; var m = require('./mod');
File: mod.js
var company = require('./main').company; console.log(company);
现在看看执行结果:
$ node main.js Google
这样你就实现了,一个其他模块的的变量你可以在另外的模块中使用他而没有使用global对象。你可以include main.js在其他的module来访问company名字。 注意:引用(include)一个已经被其他模块引用过的模块时,仅仅创建一个指向之前包体的引用,因此这意味着不会极度消耗内存。也因为没有重新创建一个真正的包体,在module里的所有初始化方法没有再执行。
因此,一个包体中,有2钟创建node全局变量的方法,一个是使用global对象,另一个是使用modules.exports。哪个是我推荐的呢?global方法适用小的应用,modules.exprots适用于大的应用。
相关推荐
在Node.js环境中,全局变量是程序中可全局访问的变量,它们不属于任何特定的作用域,而是存在于整个应用程序的生命周期内。这些变量对于开发者来说是非常有用的,因为它们可以在多个模块之间共享数据。本篇文章将...
Node.js 全局安装位置和环境变量设置详解 Node.js 是一种基于 Chrome V8 JavaScript 引擎的 JavaScript 运行时环境,广泛应用于服务器端和桌面应用开发中。在安装 Node.js 之后,需要设置全局安装位置和环境变量,...
在使用Node.js开发过程中,有时会遇到全局安装的模块无法通过命令行调用的情况,这通常是由于环境变量配置不正确导致的。本文将详细介绍如何解决这个问题。 首先,我们需要理解Node.js的模块安装机制。Node.js的包...
在系统变量中新建一个名为 `NODE_PATH` 的变量,值设置为 `D:\Develop\nodejs\node_global\node_modules`。同时,将用户变量中的 `Path` 添加一项,值设置为 `D:\Develop\nodejs\node_global`。 五、测试配置 完成...
Node全局变量global模块详解 Node全局变量global模块是Node.js中一个非常重要的模块,它提供了一个全局命名空间,允许开发者在应用程序中定义全局变量和函数。本文将详细介绍Node全局变量global模块的概念、使用...
在Node.js环境中,`process`对象是一个全局变量,它提供了与当前Node.js进程交互的接口。这个对象允许我们获取和修改进程的环境变量、管理进程的信号处理、控制进程的退出方式,以及进行一些其他系统级别的操作。在...
从远程 html 页面检索 DOM 和全局变量的 Nodejs 库。 在 MIT 许可下获得许可。 版权所有 源代码 用法 在命令行安装 $ npm install -g @stefcud/fetch-dom 运行命令参数是一个url页面和一个全局变量名 $ ...
在系统环境变量中创建或修改`NODE_PATH`,指定Node.js全局模块的路径,这样就可以在任何地方访问这些模块。此外,`PATH`环境变量也需更新,添加Node.js的可执行文件路径,如`C:\Program Files\nodejs`(Windows)或`...
关于npm全局环境变量配置的进阶知识,有时为了节省系统盘(通常是C盘)的空间,或者根据开发需求,用户可能希望将npm安装的模块存放在其他的磁盘分区。可以通过以下步骤实现: 1. 在目标磁盘(如D盘)的指定目录下...
3. 选择安装路径,确认安装配置,如是否添加环境变量、创建桌面快捷方式等。 4. 完成安装后,可以通过命令行工具(如cmd或PowerShell)输入 `node -v` 来检查 Node.js 是否成功安装及查看版本信息。 在 Node.js 4.0...
本教程将详细介绍如何在Linux上安装Node.js,包括下载、传输、解压、配置环境变量以及创建软连接,确保全局可访问。以下是对每个步骤的详细说明: 1. **下载Node.js包**: 访问Node.js官方网站(...
通过以下命令将Node.js、npm和npx设置为全局可访问: ``` sudo ln -snf /path/to/nodejs/bin/node /usr/local/bin/node sudo ln -snf /path/to/nodejs/bin/npm /usr/local/bin/npm sudo ln -snf /path/to/nodejs...
1. Node.js全局变量的使用。全局变量在Node.js中是非常常用的,包括__filename、__dirname和process.cwd()。__filename能够返回当前执行文件的绝对路径,而__dirname则返回当前执行文件所在的目录。process.cwd()则...
上述代码会在创建的上下文中定义一个全局变量`globalVar`。 - `vm.runInNewContext()`: 类似于`runInContext`,但它会为每次调用创建新的上下文。 - `vm.runInThisContext()`: 直接在当前的V8执行上下文中运行...
使用npm安装必要的全局包,例如: ```bash npm install -g nrm ``` #### 五、制作RPM包 **spec文件说明:** 1. **修改工作车间:** - 编辑 `~/.rpmmacros` 文件,并添加以下内容: ```bash %_topdir /home...