【问题标题】:In Node, why does 'require' assignment sometimes require curly brackets?在 Node 中,为什么“需要”赋值有时需要大括号?
【发布时间】:2019-11-04 05:44:46
【问题描述】:

通过 Chai 运行一些测试,我注意到在此代码下测试会失败:

const add = require('./addition');
//'add is not a function error' even though it's directly exported as a function

但它会通过这个:

const {add} = require('./addition');

然而,当使用 npm 模块时,所有的声明都没有括号:

var express = require('express');
var app = express();
var session = require('express-session');

这些本质上是具有要访问的多个属性的对象。为什么它会这样工作?是否只有函数导出必须明确指定为对象?

【问题讨论】:

  • 你有一些解释here

标签: node.js import requirejs export


【解决方案1】:

这称为对象解构。请参考link

例如,您导出了一个名为 sampleFunctions.js 的文件,该文件具有以下导出功能

function function1(params) {};
function function2(params) {};

module.exports = {
sampleFunc1: function1,
sampleFunc2: function2
}

现在当你需要它时,有两种方法 -

  • 当你只需要一个函数时(使用对象解构)
let {sampleFunc1} = require('./sampleFunctions');
sampleFunc1();

在此您只公开了所需的函数,而不是从该文件导出的所有函数。

  • 当您需要该文件中的所有函数时
let sampleFuncs = require('./sampleFunctions');
let samFunc1 = sampleFuncs.sampleFunc1;
samFunc1()

【讨论】:

  • 太棒了,没有意识到这一点。感谢您的简洁回答。
猜你喜欢
  • 1970-01-01
  • 2014-08-09
  • 1970-01-01
  • 2019-10-27
  • 2014-02-10
  • 1970-01-01
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多