揭示模块模式与ES6模块的结合

4

我不知道在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();
1个回答

12
揭示模块模式的主要目的是保持数据的封装性,但ES6模块的顶层已经是私有的了-其中定义的变量不会泄漏到全局范围(除非你显式地将其分配给全局对象,如window.foo ='foo')。
因此,在ES6模块中,揭示模块模式没有什么意义-可以在顶层定义任何东西,并且它将被限制在模块范围内(只有模块),然后可以明确地导出需要展示的内容(其他不想展示的内容也不会被暴露)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接