browserify如何使Node.js模块在浏览器中工作?

我真的无法理解在browserify后面的一些工作。 当使用纯JavaScript模块时,将其转换为浏览器代码似乎“容易”,即使有很多依赖关系。

但是,浏览器做更多:

许多不做IO的npm模块只能在浏览完成后才能工作。 其他人需要更多工作。

许多节点内置模块已被封装在浏览器中工作,但只有在明确require()或使用其function时。

当你需要()任何这些模块时,你将得到一个浏览器特定的垫片。

然后再次:

  • process.nextTick(),__dirname和__filename节点主义工作
  • 获取节点核心库事件,stream,path,url,assert,buffer,util,querystring,http,vm和crypto的浏览器版本

所以… process.nextTick() ,浏览器内的__dirname …甚至http ? 这对我来说没有意义…如何__dirname应该在浏览器内工作?

process.nextTick()只是稍后运行一个callback。
在浏览器中,这是使用setTimeout(func, 0)setImmediaterequestAnimationFrame()来模拟的。

__dirnamne__filename只是在编译时根据原始文件path进行浏览的注入variables。