6

私はバベルでは、問題なしで2つのモジュールimportを持つことができたことに驚きました。私はこれをBabelの既知の予想される行動と呼ぶ場所をいくつか見つけました。私はこれが広く(私はほとんどの人を推測している)人々の反パターンと考えられていることを知っていますが、この質問については無視してください:ES6/7の循環依存性

これが正しいかどうか、 ES6/7?

私は公式の答え(および技術的な説明)を見つけることができる最も近いものは、私がnodeJSで動作するので、それはちょっと同じだthis comment on 2ality.com

+3

関連:[ES6モジュール:インポートされた定数は、最初は未定義です。彼らは後で利用可能になる](http://stackoverflow.com/q/37515816/218196) –

+2

これは通常、悪い習慣と考えられている。しかし、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

+0

@レオ - あなたが参照したスペック(私の研究で過去に吹き飛ばされたもの)は、私が探していたものです(私の質問では、実際にそのポストにリンクしていましたが、p)。私は喜んでそれを受け入れるので、あなたはおそらく答えとしてあなたのコメントを投げるべきです。 OOでは、それほど疑問はない。デプスは通常はフットガンです。しかし、JSはより多くのFPパターンに向かって漂うので、クロス依存モジュールは自動的なアンチパターンをやめてしまうと思います。つまり、OOの開発者は自分の足で撮影をやめる必要があるので、警告は常に賢明になります。 – Andrew

答えて

5

通常、悪い習慣とみなされます。しかし、ESモジュールは循環依存をサポートするように設計されています。 ES 2017の仕様15.2.1.16.3ResolveExport Concrete Methodにいくつかの情報があります。しかし、私はそれが本当に読みにくいと思う(正直言って、私は多くの苦しむ)。あなたが2ality.comから言及した投稿は、より読みやすいかもしれません。

1

です。私が知っていることから、「必要なサイクル」は、それを避けることが最善の場合でも、違法ではありません。サイクルがある場合、少なくともnodeJSがそれを処理します.2回目は必要ありません。