4

这个问题只是为了确认我对 node browserify 的理解。

substack/node-browserify说:

兼容性:许多不做 IO 的 npm 模块在浏览器化后才可以工作。其他人需要更多的工作。许多 node 内置模块已被包装以在浏览器中工作,但仅当您显式 require() 或使用它们的功能时。

--

获取节点核心库事件、流、路径、url、assert、buffer、util、querystring、http、vm 和 crypto 的浏览器版本(当您需要()它们时)

node browserify 是否获取 node 内置模块的源代码,并构造一个捆绑文件;通过正确选择当前工作的 NVM 版本?

实际上,我第一次使用browserify 和maxogden/websocket-stream,效果非常好。

4

1 回答 1

6

不,它不使用初始形式的节点核心模块。某些功能在浏览器中根本没有意义,或者至少必须进行调整才能有意义。

相反,browserify 使用一个名为browser-builtins的模块来提供有意义的替代方案。

查看这个模块的package.json 文件,你可以看到哪些核心模块是由外部包提供的。

其余的来自这里

如您所见,像fs这样的一些模块在浏览器中没有意义(至少目前没有)。

然而,其他人可以很容易地适应在浏览器中工作。

编辑:

以上不再完全正确。本着模块化的精神,最新的 browserify 不再依赖于浏览器内置插件,而是每个模块 shim 单独发布。

有关更多信息,请查看builtins.jspackage.json

于 2013-08-31T00:30:45.367 回答