显示模块模式与ES6模块结合

时间:2019-07-25 08:40:17

标签: javascript ecmascript-6 module es6-modules revealing-module-pattern

我不知道哪种方法对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 个答案:

答案 0 :(得分:2)

显示模块模式的主要目的是保持数据封装,但是ES6模块的顶层已经是 私有的-其中定义的变量不会泄漏到全局范围内(除非您明确分配给全局对象,例如window.foo = 'foo'

因此,在ES6模块中,显示模块模式实际上没有任何意义-随时在顶层定义您想要的任何内容,并且将其范围限定于模块(并且仅限于模块),并且那么您可以明确地export揭示任何需要揭示的内容(并且其他所有内容都不会被显示出来)。