Я думаю, что ответ на ваш вопрос таков: ключевое слово export
в JavaScript является встроенной функцией JavaScript в ECMAScript 6+ и всегда может быть использовано. module.exports
в Node.js указывает c на Node.js сам по себе и не будет работать, если вы использовали его в любом скрипте , отличном от , чем приложение узла.
Что касается того, когда использовать, какой, если вы пишете приложение узла, используйте module.exports
. Почему? Node.js не поддерживает все функции ECMAScript 6 и более поздних версий, а ключевое слово export
выдаст ошибку. то есть
//This throws a syntax error in node.js
export function makeSillyName(firstName, lastName) {
const sillyName = `Hi, Mister ${firstName} Mc${lastName}pants!`;
return sillyName;
};
//This is the error that it throws:
//export function makeSillyName(firstName, lastName) {
//^^^^^^
//
//SyntaxError: Unexpected token 'export'
// at wrapSafe (internal/modules/cjs/loader.js:1072:16)
// at Module._compile (internal/modules/cjs/loader.js:1122:27)
// at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
// at Module.load (internal/modules/cjs/loader.js:1002:32)
// at Function.Module._load (internal/modules/cjs/loader.js:901:14)
// at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
Но это не так:
//Doesn't throw an error
function makeSillyName(firstName, lastName) {
const sillyName = `Hi, Mister ${firstName} Mc${lastName}pants!`;
return sillyName;
}
module.exports = {
makeSillyName
};
Существует способ использования ключевого слова export
, но он немного сложнее. Вот ссылка: https://www.freecodecamp.org/news/how-to-enable-es6-and-beyond-syntax-with-node-and-express-68d3e11fe1ab/
Итак, подведем итог: ключевое слово export
является функцией ECMAScript 6+ и не может использоваться в Node.js. Функция module.exports
работает в Node.js, но не работает во всех других «оригинальных» JavaScript средах.
Надеюсь, это поможет!