Node.js模块里exports与module.exports的区别

news/2024/7/19 14:11:40 标签: nodejs, js

exports 和 module.exports 二者的关系

1.module.exports才是真正的接口,exports只不过是它的一个辅助工具,最终返回给调用的是module.exports而不是exports。module.exports 初始值为一个空对象 {},而exports为指向module.exports 的引用
2. 在require() 的时候,返回的是 module.exports 而不是 exports

用一句话来说明就是,require方能看到的只有module.exports这个对象,它是看不到exports对象的,而我们在编写模块时用到的exports对象实际上只是对module.exports的引用。

代码示例

let a=1
exports.a=a

在index1中定义一个变量a,并用exports抛出

let a=require("./index1");
console.log(a);

在index2中引用并打印,可以看到打印出的就是对象{a:1}
这个时候如果我们在index1中修改成以下代码

let a=1
exports.a=a
module.exports={name:'123'}

此时再执行index2中的打印语句,就可以看到打印出来的是{name:‘123’}
这也证实了上面的论述。require方能看到的只有module.exports这个对象,它是看不到exports对象的,而我们在编写模块时用到的exports对象实际上只是对module.exports的引用

注意:
使用exports,只能单个设置属性 exports.a=a
使用module.exports,可以单个设置属性,也可以整个赋值

导出的模块仅执行一次

let a=require("./index1");
let b=require("./index1");
console.log(a==b);

输出的是true,说明一个模块中的JS代码仅在模块第一次被使用时执行一次,并且在使用的过程中进行初始化,之后缓存起来便于后续继续使用


http://www.niftyadmin.cn/n/489761.html

相关文章

关于package中version的符号

版本号 一般我们在pagkage中看到包的版本号如下: "dependencies": {"axios": "^0.21.1","jquery": "^2.0.0"},先暂时不看前面的符号。 如0.21.1,它是由major(主版本号)&…

Express安全验证——密码加密与鉴权

目录bcrypt密码加密Cookie-Session鉴权Token鉴权bcrypt密码加密 在实际应用中,直接将用户密码以明文信息进行存储是不安全的做法,这里讲解一下如何使用密码解析与解析 安装bcrypt模块 yarn add bcrypt加密与解析函数 这里需要自己进行promise的封装&a…

C语言实现字符串最后一个单词的长度

编译环境:Dev-c运行结果👇

python背离点的判断

##python实现背离点的判断(test2) 这一次是先判断金叉和死叉,然后把其输出结果作为新的两张表,然后在新的两张表里分别进行判断是否是背离点。 import baostock as bs import pandas as pd import talib as ta import matplotli…

Leetcode第一题:两数之和

题目描述&#xff1a; 编写 在线编写代码——Java&#xff1a; class Solution { public int[] twoSum(int[] nums, int target) { for(int i0;i<nums.length;i){ for (int ji1;j<nums.length;j){if(nums[i]nums[j]target){ …

Leetcode_回文数

题目描述&#xff1a; 在线&#xff08;leetcode官网&#xff09;代码编写&#xff1a; class Solution { public boolean isPalindrome(int x) { int pal0; int nx; boolean flagfalse; while(x>0){ palpal*10x%10; …

Mendix_Rest Services模块

下载rest services模块1、从mendix官网中下载模块&#xff0c;点击app store ➡然后搜索 rest services➡点击download,如下图所示⬇: 2、导入模块&#xff1a;在mendix studio pro 中打开你创建好的项目&#xff0c;右键 import module package…选择你刚刚下载好的.mpk文件如…