使用 ES6 模块而不是显示模块模式的额外优势是什么?
What are extra advantage of using ES6 module instead of revealing module pattern?
我正在探索 ES6 module
,并试图弄清楚我们使用 ES6 模块而不是closure
和 module pattern
(MP) 有什么额外的优势。
例如util.js 在 ES6 中。
var util ={
abc:function(){
//function body
},
def:function(){
// function body
}
export default utils; // here export is exposing the entire object
}
util.js using closure & module pattern
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 ||{}))
某些文件.js在 ES6 中
import {utils} from "path/to/file"
在某些文件中.js带有闭包和模块模式
util.abc() // Will log "abc"
我也知道 es6 module
允许我们重命名imports & exports
喜欢export { a as abc}
.
使用闭包和模块模式,我们可以在返回语句中给出一个我们喜欢的名称,例如返回{ a:_abc}
我的问题:通过使用 es6 模块而不是闭包和 MP,我们可以获得什么额外的好处。我想一个是减少代码行数。
如果我错过了任何基本差异,请原谅我
随着var util = (function(){ bla bla bla }(util || {}));
全局命名空间被污染,因此一旦您使用了 import {utils} from "path/to/file"
,它将保留在全局命名空间中,即您将在任何地方都有window.util
,即使在模块完成它的工作并被其他模块替换之后。现在考虑你有 100 个模块,并且你以同样的方式做,然后想象一下可怜的窗户会变得多么脏!
但是,如果使用ES6模块或CommonJS甚至AMD,则
- 全局命名空间未被污染。
- [ES6] 可以使用
export default something
导出默认值以使用import from "path/to/file"
- [ES6] 您可以使用
export["anotherthing"]
从 ES6 模块导出多个内容
此外,我建议您阅读这篇博文。
相关文章:
- JSDoc:模块和名称空间之间的关系是什么
- require('file_path')后面的后缀(模块)在javascript文件中是什么意思
- webpack所说的XX隐藏模块是什么意思
- 负载角度依赖关系之间的区别是什么,共享模块的最佳方式是什么
- node.js模块是什么
- 使用 ES6 模块而不是显示模块模式的额外优势是什么?
- 当未定义默认导出时,从“模块”导入模块是什么,为什么它与将 * 导入为模块不同
- Node.js:在模块作用域中使用“this”运算符的上下文是什么
- 模块模式内的回调函数中的“this”指的是什么
- 扩展 JavaScript 通用模块(UMD 文件)中定义的类的正确方法是什么?
- 来自 TypeScript 模块的 JavaScript IIFE 中的默认参数的目的是什么?
- 什么'将一些有用的js库封装到angular模块是一种很好的做法
- 将模块隐藏在闭包中的原因是什么
- Node.js域模块的替代方案是什么
- 使用ES6模块的TypeScript的最佳方法是什么
- 在使用 Jasmine 进行单元测试时,javascript 揭示模块模式的缺点是什么?
- 在angular中使用多个模块的好处是什么
- 在这个揭示的模块模式中,“这个”是什么意思
- AngularJS中的模块究竟是什么
- 将JavaScript模块添加到全局范围的跨平台方式是什么