【发布时间】:2016-06-18 00:46:08
【问题描述】:
我正在探索 ES6 module 并试图弄清楚使用 ES6 模块而不是 closure 以及 module pattern(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 module 允许我们重命名 imports & exports
喜欢export { a as abc}。
通过闭包和模块模式,我们可以在 return 语句中任意命名,例如 return { a:_abc}
我的问题:我们可以通过使用 es6 模块而不是闭包和 MP 获得什么额外的好处。我想一个是减少代码行数。
如果我遗漏了任何基本区别,请见谅
【问题讨论】:
-
虽然我理解您的帖子的重点,但您现在提出的问题过于广泛,不适合 SO。请edit您的问题更集中。
-
@Kyll 说得对。即使我在努力寻找合适的标题,我还是改变了它。希望它会收敛到我的疑问
-
“我们可以通过使用 es6 模块而不是闭包获得什么额外的好处”恕我直言仍然过于宽泛。你能专注于一个技术问题而不是这样一个悬而未决的问题吗?
-
您的 ES6 模块有语法错误,
export声明必须是顶级的。请正确缩进您的代码。 -
不,您不能使用
import {utils} from …进行默认导出。
标签: javascript closures ecmascript-6