(若是使用export default默认导出的话,那么在导入绑定的模块中,绑定的对象不要加双大括号)
在第一段代码中是导出了一个函数作为默认值,default关键字表示这是一个默认的导出,也就是可以理解为把后面的匿名函数赋值给...{},这与非默认导入的情况是不一样的,本地名称sub用于表示模块导出的任何默认函数,这在Es6中是常见的做法,并且在一些脚手架里依然采用这种方式引入一些模块的方式非常流行
那么问题来了,如果是要导出默认值或者非默认绑定的模块呢...使用内置的push()方法和Es6中的展开拓展符
return this.push(...items);
}
在上面的代码中,即使没有任何导出或导入的操作,这也是一个有效的模块,这段代码既可以用作模块...(无绑定导入)
上面的代码导入并执行了模块中包含的pushAll()方法,所以pushAll()被添加到数组的原型,也就是说现在模块中的所有数组都可以使用pushAll()方法了,其实这个原理还是在原型上添加属性和方法...,否则就会报错,因为系统会找不到的,不知道你具体要导出哪个,不明确的话,就会报错
模块的加载
在Es6中定义模块的语法,但是它并没有定义是如何加载这些模块的,在Es6中只是规定了语法,其实它将加载机制抽象到一个未定义的内部方法