使用vanilla javascript将私有变量导入模块?

时间:2018-03-13 20:15:09

标签: javascript

此示例取自我Addy Osmani's Javascript Design Patterns Book中找到的this article

var myRevealingModule = (function () {
    var privateVar = "Ben Cherry",
        publicVar = "Hey there!";

    function privateFunction() {
        console.log( "Name:" + privateVar );
    }

    function publicSetName( strName ) {
        privateVar = strName;
    }

    function publicGetName() {
        privateFunction();
    }

    // Reveal public pointers to
    // private functions and properties
    return {
        setName: publicSetName,
        greeting: publicVar,
        getName: publicGetName
    };
})();

myRevealingModule.setName( "Paul Kinlan" );

我在我自己的代码中一直使用这个模块模式,但是我遇到了一个巨大的数组变量,可以被多个文件/模块访问。

var bigArray = [
    ['AliceBlue', '#557'],
    ['AntiqueWhite', '#B01'],
    ['Aqua', '#077'],
    ['Aquamarine', '#088'],
    ...
    ...
    ...
];

我想声明这个(以及在多个地方使用的所有其他变量)只有一次。我已经读到这是webpack会解决的问题。是否有任何方法使用vanilla js将变量设置为大型数组私有,然后根据需要将其导入模块?

1 个答案:

答案 0 :(得分:1)

我建议你看看https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import

您可能正在寻找的是一个目前在浏览器中不可用的导入语句。这就是为什么您需要将webpack与babel加载器一起使用才能获得您正在寻找的模块导入。 查看本教程https://www.youtube.com/watch?v=GU-2T7k9NfI&t=2s

如果你真的想用vanilla javascript做,你可以在彼此的顶部添加<script>标签,以便能够访问其他脚本,然后查看闭包,希望稍微分开一些东西。

你基本上做的就是在脚本之上放置脚本,这是迄今为止你不能做到这一点的最好方法(webpack可以把你保存在这个脚本上,试试看(;)。

希望这会让你朝着正确的方向前进,如果你需要更多的答案,我会在评论中