Используя CommonJS, я могу сделать что-то вроде следующего:
generator.js
:
module.exports = (...args) => ({
create: makeCreate(...args),
remove: makeRemove(...args),
});
model.js
:
const generate = require('generator.js');
module.exports = generate('my-model');
use.js
:
const { create, remove } = require('model.js');
module.exports = {
doCreate: () => create('something'),
doRemove: () => remove('something else'),
};
Используя модули ES6, я могу изменить рефакторинг на следующее:
generator.mjs
:
export default (...args) => ({
create: makeCreate(...args),
remove: makeRemove(...args),
});
model.mjs
:
import generate from 'generator.mjs';
export default generate('my-model');
use.mjs
:
import model from 'model.mjs';
export const doCreate = () => model.create('something');
export const doRemove = () => model.remove('something else');
Однако способ экспорта model.mjs
сам по себе означает, что я не могу сделать это:
use.mjs
:
import { create, remove } from 'model.mjs';
export const doCreate = () => create('something');
export const doRemove = () => remove('something else');
Я не могу придумать, как кратко определить экспорт в generator.mjs
и model.mjs
, чтобы сделать это возможным.Вы можете?