当前位置: 首页 > 编程笔记 >

node.js中module.exports与exports用法上的区别

勾炜
2023-03-14
本文向大家介绍node.js中module.exports与exports用法上的区别,包括了node.js中module.exports与exports用法上的区别的使用技巧和注意事项,需要的朋友参考一下

 Node.js 引入了模块(Module)概念,一个模块可以通过module.exports 或 exports 将函数、变量等导出,以使其它 JavaScript 脚本通过require() 函数引入并使用。 

module.exports 初始值为一个空对象 {},所以 exports 初始值也是 {},exports 是指向的 module.exports 的引用,在模块内部大概是这样:

exports = module.exports = {};

举个栗子,在node.js中创建模块非常简单,一个文件就是一个模块,所以我们创建一个name.js文件就创建了一个模块name.js,使用exports和require对象对外提供接口和引用模块。

name.js

var myName=function(){
var name='AmberYLopez';
console.log(name);
};
exports.myName=myName;

这样在使用的时候需要这样

app.js

var name=require('./name');

如果我们创建的name.js文件是使用module.exports和require对象对外提供接口和引用模块。

name.js 

var myName=function(){
var name='AmberYLopez';
console.log(name);
};
module.exports=myName;

app.js

var name=require('./name');

exports 赋值其实是给 module.exports 这个空对象添加myName属性而已,为什么exports要使用添加属性的方式,而不用exports=myName?

exports是引用 module.exports的值。exports 被改变的时候,module.exports不会被改变,而模块导出的时候,真正导出的执行是module.exports,而不是exports。

如果将name.js改为

var myName=function(){
var name='AmberYLopez';
console.log(name);
};
exports=myName;

app.js

var name=require('./name');<br>console.log(name);

运行会报错。因为,前面是通过给 exports 添加属性,而现在对 exports 指向的内存做了修改,exports 和 module.exports 不再指向同一块内存,即 module.exports 指向的那块内存并没有做任何改变,仍然为一个空对象 {},所以会报错。

 类似资料:
  • 本文向大家介绍详解Node.js中exports和module.exports的区别,包括了详解Node.js中exports和module.exports的区别的使用技巧和注意事项,需要的朋友参考一下 今天看了下node.js的require方法的源码,终于搞清楚exports和module.exports的区别了。 我们知道,node.js的模块暴露有两种方法。 1. 方式一:用exports

  • 本文向大家介绍module.exports与exports的区别是什么?相关面试题,主要包含被问及module.exports与exports的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 exports 返回的是模块函数 module.exports 返回的是模块对象本身,返回的是一个类 使用上的区别是 exports的方法可以直接调用 module.exports需要new对象之后才

  • 本文向大家介绍详解Sea.js中Module.exports和exports的区别,包括了详解Sea.js中Module.exports和exports的区别的使用技巧和注意事项,需要的朋友参考一下 一、官方解释 exports require 从require导入方式去理解,关键有两个变量(全局变量module.exports,局部变量exports)、一个返回值(module.exports)

  • require 用来加载代码,而 exports 和 module.exports 则用来导出代码。 很多新手可能会迷惑于 exports 和 module.exports 的区别,为了更好的理解 exports 和 module.exports 的关系,我们先来巩固下 js 的基础。示例: test.js var a = {name: 1} var b = a console.log(a) c

  • require 用来加载代码,而 exports 和 module.exports 则用来导出代码。 很多新手可能会迷惑于 exports 和 module.exports 的区别,为了更好的理解 exports 和 module.exports 的关系,我们先来巩固下 js 的基础。示例: test.js var a = {name: 1}; var b = a; console.log(a)

  • 问题内容: 我在Node.js模块中找到了以下合同: 我不知道什么之间的不同和为什么都被用在这里。 问题答案: 设置允许在时像函数一样调用函数。简单地设置将不允许导出函数,因为节点导出了对象引用。以下代码不允许用户调用该函数。 module.js 以下内容无效。 如果设置以下内容,则将起作用。 安慰 基本上, node.js 不会导出当前引用的对象,而是导出最初引用的对象的属性。尽管 Node.j