2016-03-04 14 views
5

ES6 module'u araştırıyorum ve closure yerine module pattern (MP) yerine ES6 modülünü kullanarak hangi ekstra avantajı elde ettiğimizi anlamaya çalışıyorum. ES6'da util.js gibiModül modelini göstermek yerine ES6 modülünü kullanmanın avantajı nedir?

. ES6 modül model

var util = (function(){ 
     function _abc(){ 
     console.log("abc") 
      // function body 
     }; 
    function _def(){ 
     // function body 
     } 

    return{   // each of the function will be exposed 
     abc:_abc, 
     def:_def 

} 
}(util ||{})) 

someFile.js kapatma & kullanılarak

var util ={ 
     abc:function(){ 
     //function body 
    }, 
    def:function(){ 
     // function body 
    } 
    export default utils; // here export is exposing the entire object 
} 

util.js

kapak & modülü desenli someFile.js olarak
import {utils} from "path/to/file" 

util.abc() // Will log "abc" 

Ayrıca, ben6 module'un imports & exports gibi yeniden adlandırmamıza izin verdiğini biliyorum export { a as abc}. kapatma & modül desen ile

biz dönüşü gibi return deyimi içindeki { a:_abc}

Benim sorum ne gibi bir ad verebilirsiniz: yerine kapatma ES6 modülünü kullanarak alabilirsiniz ekstra ne faydası sanırım & MP.One olduğunu kod satırlarında azalma. Sana import {utils} from "path/to/file" kullandık kez, küresel ad alanında kalacak şekilde genel ad, kirlenmiş var util = (function(){ bla bla bla }(util || {})); ile herhangi temel bir fark

+0

Gönderinizin noktasını anladığım halde, şu anda sorduğunuz soru, SO için iyi bir uyum sağlamak için çok geniş. Lütfen sorunuzu daha odaklı bir şeye [düzenleyin]. –

+0

@Kyll haklı söyledi. Yine de uygun bir başlık bulmak için uğraşırken bile onu değiştirdim. Umarım benim bu endişemle yakınlaşacağını umarız – brk

+0

"Kapatma yerine es6 modülünü kullanarak ne kadar fayda sağlayabiliriz" hala çok geniş IMHO'dur. Böyle bir açık soruna sahip olmak yerine bir teknik konuya odaklanabilir misiniz? –

cevap

7

cevapsız varsa

her yerde window.util sahip olursun yani Affedersiniz, Modül bittikten sonra bile çalışır ve başka bir modülle değiştirilir. Şimdi 100'lerce modülünüzün olduğunu düşünün ve aynı şekilde yapın, sonra penceresi penceresinin ne kadar kirli olacağını hayal edin! genel ad kirli değildir ardından

  1. Ancak hatta ES6 Modülü veya CommonJS veya eğer AMD kullanılır

    .
  2. [ES6] Bu blog post okumak seni öneriyoruz Sen Dahası export["anotherthing"]

kullanarak, Sen ES6 Modülü birden fazla şeyler verebilirsiniz import from "path/to/file"

  • [ES6] kullanmak varsayılan bir değer ihracat export default something kullanabilirsiniz .

  • İlgili konular