Циклические зависимости в ES6 / 7
Я был удивлен, обнаружив, что в Вавилоне у меня может быть два модуля import
друг друга без каких-либо проблем. Я нашел несколько мест, которые ссылаются на это как на известное и ожидаемое поведение в Вавилоне. Я знаю, что это широко считается анти-шаблоном многими (я предполагаю, что большинство) людей, но, Пожалуйста, игнорируйте это для этого вопроса:
кто-нибудь знает, является ли это (или будет) правильным поведением в ES6/7?
самое близкое, что я могу найти официальный ответ (и техническое объяснение) является этот комментарий 2ality.com
2 ответов
это обычно считается плохой практикой. Но модули ES предназначены для поддержки циклических зависимостей. Есть некоторая информация в ES 2017 spec 15.2.1.16.3 ResolveExport Конкретный Метод. Тем не менее, я думаю, что это действительно трудно читать (честно говоря, я много страдаю). В посте вы упомянули из 2ality.com может быть лучше читается.
Я работаю с nodeJS, так что это вроде то же самое. Из того, что я знаю, "требовать циклов" не являются незаконными, даже если их часто лучше избегать. Если есть цикл, nodeJS по крайней мере справится с этим: это не потребует второго раза.