我不知道哪种方法对ES6模块和显示模块模式更好。 ES6模块中的数据/功能是否像IIFE一样私有?
我应该只使用* ES6模块吗?
// Export file
export const test = () => {
console.log('Hello from test');
}
// Import file
import { test } from "./test.js";
test();
或者我应该同时使用两者:
// Export file
export const revealingPattern = (function() {
function test() {
console.log('Hello from test');
}
return {
test
}
})();
// Import file
import { revealingPattern } from "./test.js";
revealingPattern.test();
答案 0 :(得分:2)
显示模块模式的主要目的是保持数据封装,但是ES6模块的顶层已经是 私有的-其中定义的变量不会泄漏到全局范围内(除非您明确分配给全局对象,例如window.foo = 'foo'
。
因此,在ES6模块中,显示模块模式实际上没有任何意义-随时在顶层定义您想要的任何内容,并且将其范围限定于模块(并且仅限于模块),并且那么您可以明确地export
揭示任何需要揭示的内容(并且其他所有内容都不会被显示出来)。