当前位置: 首页 > 面试题库 >

CommonJs模块系统中“ module.exports”和“ exports”之间的区别

余阳秋
2023-03-14
问题内容

声明“如果要将导出对象设置为函数或新对象,则必须使用module.exports对象。”

我的问题是为什么。

// right
module.exports = function () {
  console.log("hello world")
}
// wrong
exports = function () {
  console.log("hello world")
}

我console.logged结果(result=require(example.js))和第[Function]一个是{}


问题答案:

module是具有exports属性的普通JavaScript对象exports是一个普通的JavaScript变量,碰巧设置为module.exports。在文件末尾,node.js基本上将“返回”module.exportsrequire函数。在Node中查看JS文件的一种简化方法是:

var module = { exports: {} };
var exports = module.exports;

// your code

return module.exports;

如果在上设置exports,如exports.a=9;,该属性也会设置module.exports.a,因为对象是作为JavaScript中的引用传递的,这意味着如果将多个变量设置为同一对象,则它们都是同一对象;因此,exportsmodule.exports是相同的对象。
但是,如果你设置exports新的东西,这将不再被设定为module.exports,所以exportsmodule.exports不再是同一个对象。



 类似资料:
  • 在这个页面(http://docs.nodejitsu.com/articles/getting-started/what-is-require)中,它指出“如果您想将exports对象设置为函数或新对象,您必须使用Module.exports对象。” 我的问题是为什么。 I console.log结果(codeResult=require(example.js)/code>),第一个是 ,第二个

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

  • 本文向大家介绍详解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)

  • 问题内容: 我想知道这些摘要之间的区别是什么。 和 两者对我来说都可以正常工作,但不能确定它们背后的目的是什么。 问题答案: 考虑第一个片段,它是CommonJS样式的: 这些调用是同步调用:返回时,它将返回您请求的模块。CommonJS 调用是同步的。有一种支持异步形式的建议,但据我所知,它尚未超出建议级别。Node.js 曾经被删除过。有一个实现它的包。使用此程序包看起来很像使用AMD样式模块