我有一个类似这样的代码:
index.js
var x, a = 1;
if (a)
x = require("./a");
else
x = require("./b");
module.exports = x();
a.js
console.log("a is loaded");
module.exports = function (){
console.log("a is running")
};
b.js
console.log("b is loaded");
module.exports = function (){
console.log("b is running")
};
按我得到的节点
a is loaded
a is running
但是通过 karma+browserify 我得到了
a is loaded
b is loaded
a is running
在控制台中。
有没有办法阻止b被browserify加载?
最佳答案
如果我错了,请有人纠正我,但 browserify 的工作方式是,它会获取您可能需要的每个 JS 文件,并使用所有内容创建一个 JS,以便可以在浏览器中使用;由于它无法确定在编译时需要使用哪些源,因此它需要加载所有内容。
也许您可以尝试使用备用脚本加载器,例如 RequireJS ,例如。
关于javascript - 为什么 browserify 在调用 require 之前加载每个模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38705187/