将多个脚本捆绑在一个 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;
我正在做一个项目,需要将所有脚本合并到一个 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;