Циклические зависимости в ES6 / 7

Я был удивлен, обнаружив, что в Вавилоне у меня может быть два модуля import друг друга без каких-либо проблем. Я нашел несколько мест, которые ссылаются на это как на известное и ожидаемое поведение в Вавилоне. Я знаю, что это широко считается анти-шаблоном многими (я предполагаю, что большинство) людей, но, Пожалуйста, игнорируйте это для этого вопроса:

кто-нибудь знает, является ли это (или будет) правильным поведением в ES6/7?

самое близкое, что я могу найти официальный ответ (и техническое объяснение) является этот комментарий 2ality.com

2 ответов


это обычно считается плохой практикой. Но модули ES предназначены для поддержки циклических зависимостей. Есть некоторая информация в ES 2017 spec 15.2.1.16.3 ResolveExport Конкретный Метод. Тем не менее, я думаю, что это действительно трудно читать (честно говоря, я много страдаю). В посте вы упомянули из 2ality.com может быть лучше читается.


Я работаю с nodeJS, так что это вроде то же самое. Из того, что я знаю, "требовать циклов" не являются незаконными, даже если их часто лучше избегать. Если есть цикл, nodeJS по крайней мере справится с этим: это не потребует второго раза.