`

nodejs 全局变量

    博客分类:
  • js
 
阅读更多

    转载: 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适用于大的应用。

分享到:
评论

相关推荐

    nodejs中全局变量的实例解析

    在Node.js环境中,全局变量是程序中可全局访问的变量,它们不属于任何特定的作用域,而是存在于整个应用程序的生命周期内。这些变量对于开发者来说是非常有用的,因为它们可以在多个模块之间共享数据。本篇文章将...

    nodejs全局安装位置 、设置环境变量相关说明

    Node.js 全局安装位置和环境变量设置详解 Node.js 是一种基于 Chrome V8 JavaScript 引擎的 JavaScript 运行时环境,广泛应用于服务器端和桌面应用开发中。在安装 Node.js 之后,需要设置全局安装位置和环境变量,...

    解决Nodejs全局安装模块后找不到命令的问题

    在使用Node.js开发过程中,有时会遇到全局安装的模块无法通过命令行调用的情况,这通常是由于环境变量配置不正确导致的。本文将详细介绍如何解决这个问题。 首先,我们需要理解Node.js的模块安装机制。Node.js的包...

    NodeJS安装及环境配置(windows)

    在系统变量中新建一个名为 `NODE_PATH` 的变量,值设置为 `D:\Develop\nodejs\node_global\node_modules`。同时,将用户变量中的 `Path` 添加一项,值设置为 `D:\Develop\nodejs\node_global`。 五、测试配置 完成...

    详解Node全局变量global模块

    Node全局变量global模块详解 Node全局变量global模块是Node.js中一个非常重要的模块,它提供了一个全局命名空间,允许开发者在应用程序中定义全局变量和函数。本文将详细介绍Node全局变量global模块的概念、使用...

    流程:全局替换nodejs流程

    在Node.js环境中,`process`对象是一个全局变量,它提供了与当前Node.js进程交互的接口。这个对象允许我们获取和修改进程的环境变量、管理进程的信号处理、控制进程的退出方式,以及进行一些其他系统级别的操作。在...

    node-fetch-dom:从远程 html 页面检索 DOM 和全局变量的 Nodejs 库

    从远程 html 页面检索 DOM 和全局变量的 Nodejs 库。 在 MIT 许可下获得许可。 版权所有 源代码 用法 在命令行安装 $ npm install -g @stefcud/fetch-dom 运行命令参数是一个url页面和一个全局变量名 $ ...

    jdk8 NodeJS16.20

    在系统环境变量中创建或修改`NODE_PATH`,指定Node.js全局模块的路径,这样就可以在任何地方访问这些模块。此外,`PATH`环境变量也需更新,添加Node.js的可执行文件路径,如`C:\Program Files\nodejs`(Windows)或`...

    nodeJs的安装与npm全局环境变量的配置详解

    关于npm全局环境变量配置的进阶知识,有时为了节省系统盘(通常是C盘)的空间,或者根据开发需求,用户可能希望将npm安装的模块存放在其他的磁盘分区。可以通过以下步骤实现: 1. 在目标磁盘(如D盘)的指定目录下...

    nodejs4.0 x86 x64

    3. 选择安装路径,确认安装配置,如是否添加环境变量、创建桌面快捷方式等。 4. 完成安装后,可以通过命令行工具(如cmd或PowerShell)输入 `node -v` 来检查 Node.js 是否成功安装及查看版本信息。 在 Node.js 4.0...

    linux安装nodejs

    本教程将详细介绍如何在Linux上安装Node.js,包括下载、传输、解压、配置环境变量以及创建软连接,确保全局可访问。以下是对每个步骤的详细说明: 1. **下载Node.js包**: 访问Node.js官方网站(...

    nodejs在linux安装教程-包涵判断当前版本是32位还是64位.pdf

    通过以下命令将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...

    nodejs连接mysql数据库及基本知识点详解

    1. Node.js全局变量的使用。全局变量在Node.js中是非常常用的,包括__filename、__dirname和process.cwd()。__filename能够返回当前执行文件的绝对路径,而__dirname则返回当前执行文件所在的目录。process.cwd()则...

    nodejs之VM的demo

    上述代码会在创建的上下文中定义一个全局变量`globalVar`。 - `vm.runInNewContext()`: 类似于`runInContext`,但它会为每次调用创建新的上下文。 - `vm.runInThisContext()`: 直接在当前的V8执行上下文中运行...

    制作nodejs的linux安装包

    使用npm安装必要的全局包,例如: ```bash npm install -g nrm ``` #### 五、制作RPM包 **spec文件说明:** 1. **修改工作车间:** - 编辑 `~/.rpmmacros` 文件,并添加以下内容: ```bash %_topdir /home...

Global site tag (gtag.js) - Google Analytics