为什么browserfy在调用require之前加载每个模块

Why does browserify load every module before calling require?

本文关键字:加载 模块 browserfy 调用 require 为什么      更新时间:2023-09-26

我有一个类似的代码:

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

但因果报应+浏览我得到了

a is loaded
b is loaded
a is running

在控制台中。

有没有办法阻止b通过browserfy加载?

如果我错了,请有人纠正我,但browserfy的工作方式是,它会获取你可能需要的每一个JS文件,并创建一个包含所有内容的JS,这样它就可以在浏览器中使用;由于它无法确定在编译时需要使用哪些源,因此需要加载所有内容。

也许您可以尝试使用备用脚本加载程序,例如RequireJS。