Модульная система ES6 CommonJS
Модульная система ES6
use strict
Экспорт по умолчанию (может быть только один на модуль) Именованный экспорт (может быть несколько на модуль) Смешанный экспорт (комбинация обоих типов)
Экспорт по умолчанию
//--someFunction.js --
export default () => console.log("Hello");
//------ main.js ------
// Имя можно выбрать любое
import customName from './someFunction';
customName(); // Hello
//--someValue.js --
export default 10;
//------ main2.js ------
import anyName from './someValue';
console.log(anyName); // 10
Именованный экспорт
//--someFunction.js --
export const sum = (a, b) => a + b;
export const subtract = (a, b) => a - b;
//-- main.js --
import { sum, subtract } from './someFunction';
console.log(sum(1, 2)); // 3
console.log(subtract(2, 1)); // 1
// Импорт всех именованных экспортов в объект
import * as mathOperations from './someFunction';
console.log(mathOperations.sum(1, 2)); // 3
console.log(mathOperations.subtract(2, 1)); // 1
Смешанный экспорт
//--someFunction.js --
export default () => console.log("Hello"); //*1
export const sum = (a, b) => a + b; //*2
export const subtract = (a, b) => a - b; //*2
//-- main.js --
import greet, { sum, subtract } from './someFunction';
greet(); // Hello
console.log(sum(1, 2)); // 3
console.log(subtract(2, 1)); // 1
Выводы
Экспорт по умолчанию : Можно импортировать под любым именем. В модуле может быть только один такой экспорт. Именованный экспорт : Можно экспортировать множество переменных, функций или классов. Имя при импорте должно точно соответствовать имени при экспорте.
CommonJS
//--someFunction.js --
exports.sum = (a, b) => a + b;
exports.a = 1;
exports.b = 2;
//-- main.js --
const someModule = require('./someFunction');
const { a, b } = require('./someFunction');
console.log(someModule.sum(1, 2)); // 3
console.log(a, b); // 1, 2