Gre*_*dev 2 javascript module revealing-module-pattern ecmascript-6 es6-modules
我不知道 ES6 模块和揭示模块模式哪种方法更好。ES6 模块的数据/功能是否与 IIFE 一样私密?
我应该只使用 *only ES6 模块,像这样:
// Export file
export const test = () => {
console.log('Hello from test');
}
// Import file
import { test } from "./test.js";
test();
Run Code Online (Sandbox Code Playgroud)
或者我应该同时使用两者:
// Export file
export const revealingPattern = (function() {
function test() {
console.log('Hello from test');
}
return {
test
}
})();
// Import file
import { revealingPattern } from "./test.js";
revealingPattern.test();
Run Code Online (Sandbox Code Playgroud)
揭示模块模式的主要目的是保持数据封装,但 ES6 模块的顶层已经是私有的——其中定义的变量不会泄漏到全局范围(除非你显式地分配给全局对象,如window.foo = 'foo')。
因此,在 ES6 模块中,揭示模块模式实际上没有任何意义 - 随意在顶层定义任何你想要的东西,它会被限定在模块(并且只有模块),然后你可以明确export需要披露的任何内容(并且没有其他不受欢迎的内容会被披露)。
| 归档时间: |
|
| 查看次数: |
493 次 |
| 最近记录: |