node中的global、exports和module.exports

Node【Global全局对象】 阅读详情

global

  • javascript一定会有一个顶层对象,在浏览器环境中,顶层对象是window,这意味着在浏览器中var something就会定义一个全局变量。而在node中,顶层作用域并不是全局作用域,在node模块中使用var something 只是就只局限在当前文件中的作用域中。node中的顶层对象是global,通过var 定义的变量也是global的属性。

  • global是什么?打开一个终端,输入node,再输入global,你会发现global实际上是一个庞大的对象,所有其他对象都是依附在global上。

  • .global和var的区别–在你创建的模块中,用var 声明的变量只属于这个模块,不能被其他模块调用,而global是可以被其他模块调用。

    -声明方式

    • name == global.name == GLOBAL.name
    • 我们可以通过上面的三种方式声明全局变量

不要过度使用全局变量,以免造成污染

module

  • 当前模块的引用。 具体地说,module.exports 用于定义一个模块导出什么,且通过 require() 引入。
    module 实际上不是一个全局变量,而是每个模块内部的。

  • 在模块里用var声明的变量,全部都是在module作用域里的,优先于global作用域的属性

global.name = "liang";  
require("./b");// 执行b.js里的代码  
var name = "xiao";  
console.log(name);// xiao 

module.exports和exports

-如果我们想要不借助global,在不同模块间共享代码,需要用到exports属性,但是在node中,还有一个module.exports属性
这里写图片描述

不管用exports还是module.exports,给这个object添加属性或函数,都是完全等效的

exports.name = "Tony";  
module.exports.age = 33;  
var b = require("./b");  
console.log(b);// {name:"Tony", age:33}  
  • 所以如果只是给对象添加属性,不改变exports和module.exports的引用目标的话,是完全没有问题的
module.exports = function (name, age) {  
    this.name = name;  
    this.age = age;  
}  

exports.sex = "male";  
var Person = require("./b");  
var person = new Person("Tony", 33);  
console.log(person);// {name:"Tony", age:33}  
console.log(Person.sex);// undefined  

这里写图片描述

node导出的,永远是module.exports指向的对象,在这里就是function。所以exports指向的那个object,现在已经不会被导出了,为其增加的属性当然也就没用了

  • 如果希望把sex属性也导出,就需要这样写:
exports = module.exports = function (name, age) {  
    this.name = name;  
    this.age = age;  
}  

exports.sex = "male";  

注意,就像任何变量,如果一个新的值被赋值给 exports,它就不再绑定到 module.exports
module.exports方法还可以单独返回一个数据类型,而exports只能返回一个object对象,当我们需要返回一个数组、字符串、数字、函数等时,必须用module.exports
我的理解是当export定义的类型与module.exports定义的不一致时,exports的指向就会发生改变

前端开发 详解 Node. js 都有哪些全局对象? Node.js 提供了许多有用的全局对象,可以帮助我们更高效地编写代码和处理常见任务。通过合理使用这些全局对象,可以让我们的 Node.js 应用程序更加简洁和高效。 阅读详情

相关推荐

别再为EPI形变头疼了!FSL的topup+eddy实战保姆级教程(含AP/PA数据采集要点)

本文详细介绍了如何使用FSL的topup和eddy工具解决EPI形变问题,包括数据采集要点、参数设置和实战操作步骤。通过AP/PA双编码数据和精确的形变场估计,有效矫正MRI图像中的几何畸变,提升弥散数据质量。特别适合需要处理高场强MRI数据的研究人员和技术人员。

weixin_28725949的博客 399

node模块间传值(global、module.exports、exports)

要想在使用node模块(文件)之间互相传值,有以下几种方法。1. global在node中,global是一个全局对象,包含了版本号、引用文件路径、端口号、主文件等等上下文信息,在这里可以用于不同模块间的值传递。//example.js var x = 5; global.warning = true;//index.js var mod = require('./example.js'); con

momDIY的博客 6177

手把手教你用示波器搞定PCIe 5.0 REFCLK时钟信号测量(附完整参数解读)

本文详细介绍了如何使用示波器进行PCIe 5.0 REFCLK时钟信号测量,包括示波器与探头的选择、关键参数的测量方法及解读,以及实战中的常见问题与解决方案。通过手把手教学和完整参数解读,帮助硬件工程师高效完成时钟信号测量,确保系统稳定性。

weixin_28704565的博客 359

Node.js的module.exports与exports

今天在写MongoDB的DAO的时候,因为一些疏忽导致出现了例如MongoDB is not a function,Cannot read property 'connect' of undefined的错误,所以写这篇博客说说module.exports与exports,顺便理一下自己在写DAO的思路想先看下官网的东西,地址:http://nodejs.cn/api/exports先看一下expo

Dear_Mr的博客 1619

用OpenIPC复活你的旧摄像头:手把手教你给君正T31芯片设备刷开源固件

本文详细介绍了如何使用OpenIPC项目为君正T31芯片的旧摄像头刷入开源固件,解锁更多功能并延长设备寿命。从硬件识别、风险控制到详细刷机步骤和后期配置,手把手教你将闲置摄像头改造为智能监控设备,实现隐私可控、功能扩展等优势。

weixin_30790841的博客 766

从RadixTree到哈希表:深入对比SGLang和vLLM的Prefix Cache实现差异

本文深入对比了SGLang与vLLM在大语言模型推理服务中实现Prefix Cache(前缀缓存)的两种核心方案。SGLang采用基于Radix Tree的RadixAttention,支持任意长度前缀的精确匹配与灵活复用;vLLM则采用基于哈希表的方案,深度集成于PagedAttention,实现简洁但要求块级精确对齐。文章剖析了二者在设计哲学、内存管理、适用场景及集群级优化(如Prefix Cache Aware Routing)上的关键差异,为高性能LLM服务的技术选型提供决策依据。

blockchain9miner的博客 955

[node] Node.js的全局对象Global

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

前端 2916

下载猫 —— 会员体系安全分析与加固方案

下载猫的会员验证体系完全失效,破解不需要任何工具链、不需要写代码、不需要改文件。已验证的成功攻击路径:攻击者启动软件时加一个参数,然后用 3 行 JavaScript 即可将会员状态改为"有效期至 2099 年",全部功能闸门放行。等价于普通用户按F12打开控制台输入 3 行代码,全程不到 10 秒。项目结论破解难度⭐ 极低(会按 F12 即可,无需任何破解工具)是否修改文件否(重启软件自动恢复)是否需要服务器否是否影响其他用户单人即可完成,可复制分发修复所需工作量。

猫敷雪 42

node中的global对象

什么是global对象? global对象,是node中的全局变量,类似浏览器中的window对象。global对象也有一个global属性引用自身。 module,exports,require,__dirname,__filename虽然可以全局访问,但他们并不属于global的属性,他们是每个模块引入时,包裹的匿名函数中的参数。 global对象的属性,是全局属性,在node中都可以直接访问。 常见的全局属性 process:当前运行地进程 Buffer:二进制对象 setImmediate ……

qq_44014425的博客 3757

半导体物理基础:载流子输运理论_(4).载流子浓度与费米能级

费米能级(Fermi Level)是描述半导体中电子和空穴能量分布的基准能级。在绝对零度下,费米能级以下的所有能级都被电子占据,费米能级以上的所有能级都是空的。随着温度的升高,电子会获得足够的能量跃迁到费米能级以上的能级,形成导带中的自由电子和价带中的空穴。费米能级在半导体中的位置取决于掺杂浓度和温度。对于本征半导体,费米能级位于禁带的中心;对于掺杂半导体,费米能级会偏移,具体位置取决于掺杂类型和浓度。载流子浓度(Carrier Concentration)是指半导体中自由电子和空穴的数量密度。

2401_87715305的博客 832

ABAP CDS 和 HANA SQL 的关系

摘要: ABAP CDS与HANA SQL既有紧密联系又有本质区别。ABAP CDS作为语义数据建模框架,在SQL基础上扩展了业务语义层,通过注解(annotations)、关联关系(associations)等机制为数据附加业务含义,并支持权限控制、客户端处理等ABAP平台特性。虽然CDS实体最终会转换为HANA数据库对象执行,但它并非简单的SQL封装,而是构建了独立于数据库的语义模型。二者在数据库执行层深度融合,ABAP CDS通过代码下推技术将计算任务优化到HANA层完成。实际开发中应优先使用ABAP

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 858

node.js的global variable,和module.exports

介绍了node.js里的global,以及详细说明了exports和module.exports的区别。图文并茂,你值得拥有

kyfxbl 1万+

【Unity】 预制体Prefab使用说明

在 Unity 中,Prefab 是一个可以预先制作并重复使用的 GameObject 或组件集合,Prefab 中的 GameObject 可以有子对象和其他组件。

灵境引路人 2849

2020-12-15 node的架构 global和window全局对象的区别 函数自执行与JS模块化 module.exports和exports的区别

node的架构 应用程序(apllication)是由V8引擎(C++编写)来解析JS代码的。然后再通过Bingdings(JS编写)也就是node的api将任务放到LIBUV(C语言编写)进行事件循环,文件系统和网络IO等操作 node的应用:我们常见的npm包管理其实就是我们前端开发常用的开发库的node包 ...

又一个四季在轮回 619

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

node.js环境&调试(一)

首先要安装node.js. CommonJS: CommonJS是node.js使用的模块规范,node.js是有自带的模块规范的,就是CommonJS。 global全局对象 process代表当前执行的进程,它是挂在global对象下的。 CommonJS规范的规定: 每个文件是一个模块,并且有自己的作用域。反过来也可以理解成,一个文件就是一个模块,而且一个文件内只能有一个模块。如果我们想...

陈开心的博客 385

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

node入门之环境和module.exports导出

环境安装: node 官方地址:https://nodejs.org/zh-cn/,下载后直接安装即可; nodejs的CommonJS规范: 1、每个文件是一个模块,有自己的作用域;对其他文件不可见; 2、在模块内部module变量代表模块本身; 3、module.exports属性代表模块对外接口; 创建一个模块,要先创建一个js文件; 在当前文件下...

u012710123的博客 899

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

(译)Node.js的全局变量

原文标题:Global Variables in Node.js 原文链接:http://www.hacksparrow.com/global-variables-in-node-js.html 你可能正在使用一些 Node.js 的模块,或者一个框架比如 Express.js ,并且突然感觉你需要创建一些全局变量。在 Node.js 中你会如何创建全局变量? 在这个问题上,大多数的建议是“...

weixin_30323961的博客 145

node学习笔记(一)————global、模块系统、事件、buffer

global对象 浏览器中,全局对象是window。window对象上定义的任何内容都可以被全局访问。 node中有两个类似但却各自代表不同含义的对象: global:和window一样,任何global对象上的属性都可以被全局访问到 process:所有全局执行上下文中的内容都在process中。浏览器中,只有一个window对象,node中,也只有一个process对象。举例来说,浏览器...

joke叔叔的博客 322

global对象和模块作用域

javascript:在浏览器中默认变量,函数的 作用域(属于)=>全局对象Window node.js:模块化(默认)=>变量,函数属于当前文件模块(私有) 若想在全局范围内为某个变量赋值 可应用全局对象global(类似window) 全局对象global 用于定义全局命名空间,所有全局变量(除了global本身以外) ...

weixin_50814249的博客 384

nodejs---day3(运行nodejs、exports和module.exports的区别)

1、运行nodejs 在vscode中运行nodejs,安装一个Code runner,点js文件右击,在菜单栏中选择run code即可运行 2、global 在node中有一个全局对象global,它的作用和网页中window类似 在全局中创建的变量都会作为global的属性保存。 在全局中创建的函数都会作为global的方法保存。 直接声明的属性,是全局变量,保存在global中,代码如下 a =10 一个js文件是一个模块,node会对模块进行包装,会在代码的最顶部添加,如下代码 function

qq_44842962的博客 719

node学习笔记(四):global|process进程|nextTick和setImmediate

1、module.exports和exports的区别 言而总之,总而言之是一个东西 const exports = module.exports。(node在加载的时候默认执行这一句) 对外暴露只能是module.exports。 就是一个指向,但是如果指向改变,就不代表module.exports向外暴露接口的意思了。 2、global对象 CommonJS Buffer(二...

黑呆呆 335

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

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

qq_44894655的博客 279

Node Global对象

标签: node Global 所有属性都可以在程序的任何地方访问,即全局变量。在javascript中,通常window是全局对象,而node.js的全局对象是global,所有全局变量都是global对象的属性,如:console、process等。 全局对象与全局变量 global最根本的作用是作为全局变量的宿主。满足以下条件成为全局变量。 在最外层定义的变量 全局对象的属性 隐式定义的...

weixin_34236869的博客 260

node环境与CommonJS规范

1. 环境 首先,我们来了解一下nodejs执行起来主要需要什么 CommonJS commonjs是nodejs所用的模块规范 global对象 我们知道在浏览器中运行的JavaScript包含BOM、DOM,其中window就是一个全局对象,但是nodejs并没有BOM、DOM这些东西,所有也没有window这个全局对象,取而代之的是global,同样里面也有一些属性和方法供我们使用。...

weixin_33721344的博客 442

Node.js——Node中的JavaScript新特性

global对象 在浏览器中global对象就是window对象。例如setTimeout() 就是 window.setTimeout() Node中的全局变量 global: 在Node中,任何global对象上的属性都可以被全局访问到。 process: 所有全局执行上下文中的内容都在process对象中。Node中只有一个process对象,例如在浏览器中窗口的名字是window.nam...

五柳 224

Nodejs的全局变量

概要在 Node.js 中有两种创建全局变量的方法:(1)使用 global 对象,(2)使用 module.export 。较小的应用使用 global 对象,大型应用使用 module.export。详细讲解我们在使用Node.js 的模块时,例如 Express.js ,有时候我们需要创建一些全局变量,用于全局共享,那么该如何做呢?方法一:使用global 对象首先,让我们来分析一下这个gl...

weixin_33738555的博客 3799
上一篇: Nginx服务器安装配置
下一篇: Angular之$watch方法监视作用域
EffIdong
博客等级 码龄10年 10粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值