Смешанный экспорт по умолчанию и именованный экспорт в узле с синтаксисом ES5 - PullRequest
0 голосов
/ 05 января 2019

Весь мой опыт экспорта / импорта модулей пришел в ES6 с использованием export и import, где вы можете сделать что-то подобное, чтобы один модуль экспортировал функцию по умолчанию, а также отдельные именованные функции.

// module.js
export default mainFunction
export { namedFunction }

// main.js
import mainFunction from 'functions'
mainFunction()

import { namedFunction } from 'function'
namedFunction()

Однако я не могу понять, как это сделать с импортом в стиле ES5, используя module.exports и require. Насколько я понимаю, я могу экспортировать одно значение по умолчанию:

// module.js
module.exports = function mainFunction() {}

// main.js
const mainFunction = require('module.js')

Или я могу создать именованный экспорт:

// module.js
module.exports = {
  namedFunction: function() {}
}

// main.js
const namedFunction = require('module.js').namedFunction

Но я не могу сделать оба. Я думал, что мог бы назвать один из экспортов "default", как это, но он не работает

// module.js
module.exports = {
  default: function() {},
  namedFunction: function() {}
}

// main.js
const mainFunction = require('module.js') // does not work
const mainFunction = require('module.js').default // works, but not what I want
const namedFunction = require('module.js').namedFunction

Как я могу выполнить этот двойной экспорт по умолчанию с именами в ES5?

1 Ответ

0 голосов
/ 05 января 2019

Вы хотите присвоить значение module.exports в качестве функции по умолчанию, а затем поместить все именованные экспорты в качестве свойств этой функции.

const defaultFunction = () => { console.log('default!'); };
const namedFunction1 = () => { console.log('1!'); };
const namedFunction2 = () => { console.log('2!'); };

const myModule = module.exports = defaultFunction;
myModule.namedFunction1 = namedFunction1;
myModule.namedFunction2 = namedFunction2;

Допустим, это было в myModule.js. Тогда вы можете сделать это:

const myModule = require('./myModule');
myModule(); // Prints: 'default!'
myModule.namedFunction1(); // Prints: '1!'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...