此示例取自我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将变量设置为大型数组私有,然后根据需要将其导入模块?
答案 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可以把你保存在这个脚本上,试试看(;)。
希望这会让你朝着正确的方向前进,如果你需要更多的答案,我会在评论中