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