6

Tôi rất ngạc nhiên khi thấy rằng trong Babel, tôi có thể có hai mô-đun import lẫn nhau mà không có bất kỳ vấn đề nào. Tôi đã tìm thấy một vài nơi đề cập đến điều này như một hành vi được biết đến và mong đợi ở Babel. Tôi biết rằng điều này được nhiều người (tôi đoán là nhiều nhất) coi là một hình mẫu chống đối, nhưng hãy bỏ qua điều đó cho câu hỏi này:Phụ thuộc thông tư trong ES6/7

Có ai biết nếu điều này là (hoặc sẽ) hành vi chính xác trong ES6/7?

Điều gần nhất tôi có thể tìm đến một câu trả lời chính thức (và giải thích kỹ thuật) là this comment on 2ality.com

+3

Liên quan: [ES6 modules: hằng số được nhập không xác định lúc đầu; chúng trở nên có sẵn sau này] (http://stackoverflow.com/q/37515816/218196) –

+2

Vâng, nó thường được coi là thực hành xấu. Nhưng các mô-đun ES được thiết kế để hỗ trợ các phụ thuộc theo chu kỳ. Có một số thông tin trong ES 2017 spec [15.2.1.16.3ResolveExport Concrete Method] (https://tc39.github.io/ecma262/#sec-resolveexport). Tuy nhiên, tôi nghĩ rằng nó thực sự khó đọc. [Bài đăng này] (http://www.2ality.com/2014/09/es6-modules-final.html) có thể dễ đọc hơn. – Leo

+0

@Leo - thông số bạn tham chiếu (và điều tôi đã thổi qua trong nghiên cứu của tôi) là những gì tôi đang tìm kiếm (mặc dù tôi thực sự liên kết với bài đăng đó trong câu hỏi của tôi; p). Bạn có lẽ nên ném bình luận của bạn vào như một câu trả lời, bởi vì tôi sẵn sàng chấp nhận nó. Không có câu hỏi trong OO, circ. deps thường là một khẩu súng ngắn. Nhưng khi JS trôi dạt nhiều hơn đối với nhiều mẫu FP hơn, tôi nghĩ rằng các mô-đun phụ thuộc chéo dừng lại là một mô hình chống tự động. Điều đó nói rằng, các nhà phát triển OO cần phải dừng chụp ở chân của họ, vì vậy cảnh báo sẽ luôn khôn ngoan. – Andrew

Trả lời

5

Thường được coi là thực tiễn không tốt. Nhưng các mô-đun ES được thiết kế để hỗ trợ các phụ thuộc theo chu kỳ. Có một số thông tin trong thông số kỹ thuật ES 2017 15.2.1.16.3ResolveExport Concrete Method. Tuy nhiên, tôi nghĩ rằng nó thực sự khó đọc (thành thật mà nói, tôi phải chịu đựng rất nhiều). Bài đăng bạn đã đề cập từ 2ality.com có ​​thể dễ đọc hơn.

1

tôi làm việc với nodeJS, vì vậy nó kinda giống nhau. Từ những gì tôi biết, "yêu cầu chu kỳ" không phải là bất hợp pháp, ngay cả khi nó thường là tốt nhất để tránh chúng. Nếu có một chu kỳ, nodeJS ít nhất sẽ xử lý điều đó: nó sẽ không yêu cầu lần thứ hai.

Các vấn đề liên quan