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

时间:2017-09-20 13:00:20

标签: javascript bundle browserify

我正在开发一个项目,该项目要求将所有脚本合并到一个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);

1 个答案:

答案 0 :(得分:0)

模块不共享全局状态。您需要将一个模块导入另一个模块,就像使用服务器端节点脚本一样。然后传入共享变量。与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;