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)
, setImmediate
或requestAnimationFrame()
来模拟的。
__dirnamne
和__filename
只是在编译时根据原始文件path进行浏览的注入variables。