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

NodeJS / Express中的“ module.exports”和“ exports.methods”是什么意思?

艾浩广
2023-03-14
问题内容

查看的框架的随机源文件,有两行我不理解的代码(这些代码行几乎是所有NodeJS文件的代表)。express``NodeJS

/**
 * Expose `Router` constructor.
 */

exports = module.exports = Router;

/**
 * Expose HTTP methods.
 */

var methods = exports.methods = require('./methods');

我知道 第一段代码 允许文件中的其余功能公开给NodeJS应用程序使用 ,但我不清楚 它的工作原理 或该行代码的含义。

什么exportsmodule.exports实际上的意思吗?

我相信第二段代码允许访问文件中的函数methods,但同样,它是如何做到这一点的。

基本上,这些是什么神奇的话: moduleexports


问题答案:

更具体:

module 是文件内的全局范围变量。

因此,如果您致电require("foo")

// foo.js
console.log(this === module); // true

它的行为与window在浏览器中的行为相同。

还有一个称为的全局对象global,您可以在所需的任何文件中进行读写,但这涉及到更改全局范围,这就是 EVIL

exports是存在的变量module.exports。基本上,这是您在需要文件时 导出 的内容。

// foo.js
module.exports = 42;

// main.js
console.log(require("foo") === 42); // true

单独存在一个小问题exports。在_global范围上下文+和module
一样的。(在浏览器中,全局范围上下文与之window相同)。

// foo.js
var exports = {}; // creates a new local variable called exports, and conflicts with

// living on module.exports
exports = {}; // does the same as above
module.exports = {}; // just works because its the "correct" exports

// bar.js
exports.foo = 42; // this does not create a new exports variable so it just works


 类似资料:
  • 问题内容: 在NodeJS 模块 的文档中,示例代码包含。 什么是功能,它在哪儿定义? 问题答案: app对象在创建Express服务器时实例化。它具有一个可以在其中定制的 _ 中间件 堆栈_(现在在4.x版中已弃用)。 要设置中间件,您可以为要添加的每个中间件层调用(可以对所有路径通用,也可以仅在服务器处理的特定路径上触发),并将其添加到Express中间件堆栈中。中间件层可以在的多个调用中一个

  • 问题内容: 在github上研究node.js源代码时,我已经看过很多次了。 谁能解释这个功能的作用? 问题答案: 该函数返回内部模块,如require。它不是公共的,因此您不应在代码中依赖它,但如果您想了解事物的工作原理,则可以将其用于节点的低级对象。 例如,在这里 注册绑定。它导出 构造函数。在它的进口

  • 问题内容: 我在我的应用程序中使用了express以及body-parser。 但是,express 4.0中的“扩展”是什么意思? 我找到了这个 但是,我仍然不能理解它的含义。 问题答案: 如果为,则不能发布“嵌套对象” 如果为,则可以按照自己喜欢的方式进行操作。

  • 问题内容: 我有一个类似于以下的简单代码,并将其作为节点模块执行: 我知道这是默认上下文(例如在浏览器中),但是关键字指的是什么? 问题答案: (在模块的上下文中)与node.js中的相同。但是,通常应该使用/ 代替,这样可以清楚地清除正在修改的内容。

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

  • 问题内容: 尽管非常了解JavaScript,但我对Node.js生态系统中的这三个项目的 确切 用途感到困惑。像Rails的架子吗?有人可以解释一下吗? 问题答案: [ 更新: 从4.0版本开始,Express不再使用Connect。但是,Express仍与为Connect编写的中间件兼容。我的原始答案如下。 我很高兴您对此提出疑问,因为对于那些关注Node.js的人们来说,这无疑是一个常见的困