我很驚訝地發現,在Babel中,我可以有兩個模塊import
彼此沒有任何問題。我發現一些地方將這稱爲巴別的一個已知和預期的行爲。我知道這被廣泛認爲是一種反模式,很多人(我猜最多),但請忽略這個問題:ES6/7中的循環依賴關係
有誰知道這是(或將會)正確的行爲在ES6/7?
我能找到一個正式答覆(技術說明)最接近的事是this comment on 2ality.com
我很驚訝地發現,在Babel中,我可以有兩個模塊import
彼此沒有任何問題。我發現一些地方將這稱爲巴別的一個已知和預期的行爲。我知道這被廣泛認爲是一種反模式,很多人(我猜最多),但請忽略這個問題:ES6/7中的循環依賴關係
有誰知道這是(或將會)正確的行爲在ES6/7?
我能找到一個正式答覆(技術說明)最接近的事是this comment on 2ality.com
它通常被認爲是不好的做法。但ES模塊旨在支持循環依賴。 ES 2017中有一些信息規格15.2.1.16.3ResolveExport Concrete Method。不過,我認爲這真的很難閱讀(說實話,我受了很多傷害)。你從2ality.com提到的帖子可能會更好。
我工作的NodeJS,所以它有點相同。據我所知,「要求週期」並不違法,即使通常最好避免它們。如果有一個循環,nodeJS至少可以處理:它不需要第二次。
相關:[ES6模塊:導入的常量一開始是未定義的;他們後來可用](http://stackoverflow.com/q/37515816/218196) –
是的,它通常被認爲是不好的做法。但ES模塊旨在支持循環依賴。 ES 2017規範中有一些信息[15.2.1.16.3ResolveExport具體方法](https://tc39.github.io/ecma262/#sec-resolveexport)。但是,我認爲這很難閱讀。 [這篇文章](http://www.2ality.com/2014/09/es6-modules-final.html)可能會更好的可讀性。 – Leo
@Leo - 你引用的規範(以及我在我的研究中發現的東西)是我正在尋找的東西(儘管我實際上與我的問題中的那篇文章相關聯; p)。你應該把你的評論作爲答案,因爲我很樂意接受它。毫無疑問,在OO中,circ。 deps通常是一種衝鋒槍。但是隨着JS向更多FP模式發展,我認爲交叉依賴模塊不再是自動反模式。也就是說,OO開發者需要停止他們腳下的射擊,所以警告永遠是明智的。 – Andrew