我正在学习ES6 模块
,尝试理解使用ES6模块相比于闭包
和模块模式
(MP)的额外优势。
例如,在ES6中的util.js.
var util ={
abc:function(){
//function body
},
def:function(){
// function body
}
export default utils; // here export is exposing the entire object
}
使用闭包和模块模式的util.js
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 ||{}))
ES6中的someFile.js
import {utils} from "path/to/file"
在使用闭包和模块模式的someFile.js文件中
util.abc() // Will log "abc"
我知道es6 模块
可以让我们重命名导入和导出
,例如 export { a as abc}
。
使用闭包和模块模式,我们可以在return语句中使用任何我们想要的名称,例如 return { a:_abc}
我的问题是:相比于闭包和模块模式,使用es6模块还能获得什么额外的好处?我猜其中一个好处是减少代码行数。
如果我错过了任何基本差别,请原谅。
export
声明必须位于顶层。请正确缩进你的代码。 - Bergiimport {utils} from …
来进行默认导出。 - Bergi