В Node, почему для «назначения» иногда требуются фигурные скобки? - PullRequest
1 голос
/ 21 июня 2019

Выполняя некоторые тесты через 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');

И это по сути объекты с множеством свойств, к которым необходимо получить доступ.Почему это работает так?Это только функции экспорта, которые должны быть явно назначены как объекты?

1 Ответ

2 голосов
/ 21 июня 2019

Это известно как разрушение объекта. Пожалуйста, обратитесь ссылка .

Например, вы экспортировали файл с именем 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()
...