6

Zaskoczyło mnie, że w Babel mogę mieć dwa moduły bez żadnych problemów. Znalazłem kilka miejsc, które określają to jako znane i oczekiwane zachowanie w Babelu. Wiem, że jest to powszechnie uważane za anty-wzór przez wielu (zgaduję większość) ludzi, ale proszę zignorować to na pytanie:Zależności kołowe w ES6/7

Czy ktoś wie, czy to jest (lub będzie) prawidłowe zachowanie w ES6/7?

Najbliższy rzeczą mogę znaleźć na oficjalnej odpowiedzi (oraz wyjaśnienie technicznej) jest this comment on 2ality.com

+3

Powiązane: [Moduły ES6: importowane stałe są nieokreślone na początku; stają się dostępne później] (http://stackoverflow.com/q/37515816/218196) –

+2

Tak, zazwyczaj są to złe praktyki. Ale moduły ES są zaprojektowane do obsługi cyklicznych zależności. Istnieją pewne informacje w specyfikacji ES 2017 [15.2.1.16.3ResolveExport Concrete Method] (https://tc39.github.io/ecma262/#sec-resolveexport). Myślę jednak, że ciężko to odczytać. [Ten post] (http://www.2ality.com/2014/09/es6-modules-final.html) może być lepiej czytelny. – Leo

+0

@Leo - specyfikacja, do której się odwołałeś (i którą przeleciałam tuż przed moim badaniem) jest tym, czego szukałem (chociaż faktycznie powiązałem to stanowisko z moim pytaniem; p). Powinieneś prawdopodobnie zamieścić swój komentarz jako odpowiedź, ponieważ chętnie go zaakceptuję. Nie ma wątpliwości, że w OO, circ. deps to zazwyczaj footgun. Ale ponieważ JS dryfuje bardziej w kierunku większej liczby wzorów FP, myślę, że zależne od siebie moduły przestają być automatycznym deseniem. To powiedziawszy, deweloperzy OO muszą przestać strzelać u ich stóp, więc ostrzeżenie zawsze będzie mądre. – Andrew

Odpowiedz

5

To zwykle uważane za złe praktyki. Ale moduły ES są zaprojektowane do obsługi cyklicznych zależności. Istnieją pewne informacje w ES 2017 spec 15.2.1.16.3ResolveExport Concrete Method. Jednak myślę, że to naprawdę trudne do odczytania (szczerze mówiąc, bardzo cierpię). Post, o którym wspomniałeś w witrynie 2ality.com, może być lepiej czytelny.

1

pracuję z nodeJS, więc to trochę taka sama. Z tego, co wiem, "wymaganie cykli" nie jest nielegalne, nawet jeśli często najlepiej jest ich unikać. Jeśli istnieje cykl, nodeJS przynajmniej to zniesie: nie będzie wymagało drugiego razu.

Powiązane problemy