将多个脚本捆绑在一个 bundle.js 中,但我遇到了变量访问问题

Bundled several scripts in one bundle.js but I'm having issues with variable access

我正在做一个项目,需要将所有脚本合并到一个 bundle.js 文件中。我设法用 browserify 做到了这一点。这里的问题是,虽然 bundle.js 文件中包含的每个单独的脚本都可以完美地执行包含的代码,但它无法从其他脚本访问全局变量。 就像在这个例子中一样。第一个脚本执行完美,但第二个脚本无法访问切片变量,即使第一个脚本正确执行,当然是第一个。 关于如何解决此问题的任何想法?

first.js 脚本的内容:

var a = ['zero', 'one', 'two', 'three'];
var sliced = a.slice(1, 3);


function logger() {
    console.log(a);      // ['zero', 'one', 'two', 'three']
    console.log(sliced); // ['one', 'two']
    console.log("first.js script executed");
};

logger(); 

second.js 脚本的内容:

console.log(sliced);

模块不共享全局状态。您需要将一个模块导入另一个模块,就像您对服务器端节点脚本所做的那样。然后传入共享变量。 "Bundling" 使用 Browserify 解决这些导入并将结果保存到 1 个文件中,因为浏览器不理解 CommonJS 导入语法。

script.js

let script2 = require('./relative/path/to/script2.js');

let a = ['zero', 'one', 'two', 'three'];
let sliced = a.slice(1, 3);

function logger() {
    console.log(a);      // ['zero', 'one', 'two', 'three']
    console.log(sliced); // ['one', 'two']
    console.log("first.js script executed");
};

logger();
script2(sliced)

script2.js

function script2PublicFunction (sliced){
    console.log(sliced);
}

module.exports = script2PublicFunction;