【发布时间】:2019-05-08 11:00:53
【问题描述】:
使用 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 中的导出以使上述成为可能。可以吗?
【问题讨论】:
标签: javascript ecmascript-6 es6-modules