Беспокоятся о циклических ссылках в модулях EcmaScript 2015 - PullRequest
0 голосов
/ 14 октября 2019

Я использую веб-пакет с .splitEntryChunks () .

У меня была эта безумная идея разбить всю мою логику на отдельные файлы:

|utils
|- animations.js
|- controls.js
|- debug.js
|- dialogs.js
|- events.js
|- index.js
|- layout.manager.js
|- regex.js
|- settings.js
|- translator.js

Это выглядит великолепно для меня. Но теперь у меня есть пара js-файлов для конкретных страниц (называемых менеджерами), которым нужны части этих утилит.

Например:

// /managers/forumManager.js
import Translator from '../utils/translator';
import Controls from '../utils/controls';
import Dialog, { LoadingDialog, Toast } from '../utils/dialogs'

Есть еще несколько менеджеров, которые работают в аналогичныхпуть. Теперь, когда я строю свой проект, я получаю файлы от крупных поставщиков ~ * .js (размером 1 ~ 2 МБ). Я не могу найти способ уменьшить размер файла, поэтому я решил использовать /utils/index.js как концентратор для всех утилит.

// /utils/index.js
import Translator from './translator';
import Settings from './settings';
import Animations from './animations';
import Events from "./events";
import Controls from './controls';
import Dialogs, { LoadingDialog, Toast } from './dialogs';
import RegexUtils from './regex';

export { Translator, Settings, Animations, Events, Controls, Dialogs, LoadingDialog, Toast, RegexUtils };

Но Dialogs нужен доступ к паре утилит,Итак:

// /utils/dialogs.js
import { Translator, RegexUtil, Animation, Events, Controls } from './index';

Это уменьшает количество vendors~*.js файлов, но это не правильно. На этом сайте предлагается решение путем устранения проблемных зависимостей (передачи зависимостей через конструктор). Но мне эта идея совсем не нравится.

Я надеюсь, что кто-то с лучшим пониманием ES6 может помочь мне с этим

...