Неправильно ли использовать module.exports для экспорта определенных данных?

#javascript #node.js #module #node-modules

#javascript #node.js #модуль #узел-модули

Вопрос:

Итак, это первый раз, когда я пытаюсь взять большое js-приложение, написанное в одном файле, и разделить его на отдельные файлы. Цель состоит в том, чтобы создать более организованную базу файлов, а не один большой.

Существует множество вызовов api и много общей информации. Я использую module.exports, но я не уверен, что это лучший способ сделать это. Я хотел бы получить совет о том, как сделать это более правильно, или, может быть, мне следует использовать какой-то другой метод? Я использую module.exports для передачи определенных данных, а не функций.

Например, вот функция аутентификации, которая была в файле большего размера, а теперь в authenticate.js (некоторые нерелевантные части были удалены):

 module.exports.authenticate = (logger) => {
  return new Promise((resolve, reject) => {
    const authentication = new logger("Authentication Service"); 

    fs.createReadStream('auth.json').pipe(request.post(('https://example.com/auth'), function (error, response, body) {
      authentication.log('Authenicating API access');

      body = JSON.parse(body);

      token = body.response.token
      if (typeof(token) === 'undefined' || token === '') {
        reject('No Token Available');
      }
      authentication.log('Successfully logged in.');
      module.exports.token = token;
      resolve();
    }));
  })
}
  

Итак, в частности, я использую ‘module.exports.token = token;’ для передачи обратно информации о токене, которая была только что получена из вызова api, я делаю это в нескольких модулях, хотя и для разных фрагментов информации.

Это правильная и эффективная практика? Спасибо!

Комментарии:

1. Вы делаете то, что хотите в своем приложении, если ваше приложение легко обновляется, проблем нет. Если ваша цель — предоставить общий доступ к библиотеке, инкапсуляция важнее

2. Спасибо, я спросил, потому что я никогда не делал module.exports с чем-то таким конкретным так много раз. Все это работает таким образом, хотя я доволен. Хотя это странно. Ценю вклад!