ES6 генератор экспортных шаблонов - PullRequest
0 голосов
/ 08 мая 2019

Используя 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, чтобы сделать это возможным.Вы можете?

1 Ответ

0 голосов
/ 08 мая 2019

Альтернативы:

Вы можете сделать что-то подобное в use.mjs

import model from 'model.mjs';

const {create, remove} = model;

export const doCreate = () => create('something');
export const doRemove = () => remove('something else');

Другое решение:

В model.mjs

import generate from "./generator.js";

export const { create, remove } = generate("my-model");

А в use.mjs

import { create, remove } from "./model.js";

export const doCreate = () => create("something");
export const doRemove = () => remove("something else");
...