Es2015'i son projede babel ile kullanmaya başladım. if
koşulunda import
veya export
yapmayı denediğimde, bir hatam var 'import' and 'export' may only appear at the top level
. Bunun için birçok durum görüyorum ve require
ile iyi çalışıyor, ancak es2015 modülleriyle değil. Bu sınırlamanın bir sebebi var mı?Neden ihracat bildirimleri es2015'te en üst düzeyde olmalıdır?
cevap
JavaScript, ES6 modüllerinde statik analiz gerçekleştirir. Bu, ithalatı veya ihracatı dinamik olarak gerçekleştiremeyeceğiniz anlamına gelir. Read section 4.2 of this article for more information:
Bir modülün yapısı (statik) derleme sırasında ithalat ve ihracat belirleyebilir statik aracı olma - Yalnızca kaynak koduna bakmak zorunda, bunu gerçekleştirmenin gerekmez.
, statik olarak incelenebilir yani makro ve tip (tartışılan olmak için bir kaynak dosyası için yeteneğine güvenmek gelecek özellikler için JavaScript hazırlamak için bunlardan bazıları bu yaklaşımın birçok nedeni vardır yukarıda belirtilen makale).
başka ilginç article on this topicsiklik bağımlılıkları ve hızlı aramaları nedenleri olarak bahseder.
______
Bir modülün bazı yuvalanmış blok içinde bir export
gerçekleştirmek istiyorsanız, modül yazma ve neredeyse kesinlikle gerekli değildir olarak API'leri/iç sergilemek nasıl yeniden. Aynı şey, ES5 kodunuzda iç içe geçmiş bloklar içinde şu anda require
ing modülleri iseniz de geçerlidir. Modülünüzün üst kısmındaki require
/import
ve neden iç içe geçirilmiş bloklar içindeki API'lerini/dahili öğelerini kullanıyor? Bu yaklaşımın en büyük avantajı, en azından okunabilirlik açısından bakıldığında, kaynağını require
çağrılarına taramak zorunda kalmadan bir modülün bağımlılıklarını bilmenizdir.
Sadece bu değil, aynı zamanda modül bağımlılıkları nedeniyle kavramsal olarak kaldırıldılar kodunuzdan herhangi birini çalıştırmadan önce tamamen işlenir ve bir "if" durumunda içe aktarma işlemi yürütmeyi gerektirir. – loganfsmyth
@loganfsmyth Bu, :-) koymanın çok daha özlü bir yoludur. – sdgluck
- 1. Backbone.js uygulamasının en üst seviyesi ne olmalıdır? Görünüm, genel nesne ,?
- 2. Yakalanmamış SyntaxError: Sıkı mod kodunda, işlevler yalnızca en üst düzeyde veya başka bir işlev dahilinde bildirilebilir
- 3. eslint hatası göz ardı: 'import' ve 'export' sadece en üst düzeyde görünebilir
- 4. Named ihracat bu işi yapar Neden
- 5. İhracat listesi
- 6. Hata bildirimleri olarak hata bildirimleri
- 7. Scene2d.ui penceresinin en üst rengi?
- 8. Neden üst düzey işlevlerimin Haskell'de imzalara ihtiyacı var?
- 9. İhracat verilerim
- 10. İhracat daktilo
- 11. "Ölü" nesnelere ios bildirimleri
- 12. İhracat boş hücreler
- 13. Çok Düzeyde içerir CodeFirst - EntityFrameWork
- 14. İhracat Recordset E-Tabloya
- 15. JComponent'in en üst düzey konteyneri nasıl alınır?
- 16. JFrame JAVA'da nasıl en üst düzeye getirilir?
- 17. Java'da en üst düzey sınıf nedir?
- 18. Bir öğenin en üst konumu nasıl alınır?
- 19. NodeJS oturum nesnesine en üst düzey erişim
- 20. VBA'da en yakın üst tam sayıya yuvarlama
- 21. başka düzeyde bir klasörden bir sınıf alamıyor
- 22. Javascript en iyi uygulamaları, neden zincir işlevi/değişken bildirimleri için virgül kullanmak için?
- 23. push bildirimleri
- 24. Yığın bildirimleri()
- 25. varsayılan bir ihracat modülü
- 26. Yii - İthalat/İhracat Excel
- 27. Ses ihracat iOS Swift
- 28. node.js ihracat fonksiyonu
- 29. android ithalat ihracat sitesi
- 30. İhracat sorgu sonucu dosyasını
Es2015 modülleri eşzamanlı olarak yüklenebildiğinden belki? Yuvalanmış 'dışa aktarmaya izin vermek, bu satıra – CodingIntrigue
babel-eslint adı verilene kadar dışa aktarmanın ertelenebileceği anlamına gelir. https://stackoverflow.com/questions/39158552/ignore-eslint-error-import-and-export-may-only-appear-at-the-top-level –