【问题标题】:How browserify makes Node.js modules to work in the browser?browserify 如何让 Node.js 模块在浏览器中工作?
【发布时间】:2013-08-31 08:47:41
【问题描述】:

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

browserify 做得更多:

许多不做 IO 的 npm 模块会在 浏览器化。其他人需要更多的工作。

许多节点内置模块已经被包装在浏览器中工作, 但仅当您明确require() 或使用它们的功能时。

当你 require() 任何这些模块时,你会得到一个 特定于浏览器的 shim。

再说一遍:

  • process.nextTick()、__dirname 和 __filename 节点主义工作
  • 获取浏览器版本的节点核心库事件、流、路径、url、 断言、缓冲区、实用程序、查询字符串、http、vm 和加密时 要求()他们

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

【问题讨论】:

  • 这个问题和this one非常相似。我提供了一个answer there,在这里也应该有帮助。

标签: javascript node.js npm browserify


【解决方案1】:

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

__dirnamne__filename 只是 browserify 在编译时根据文件的原始路径注入的变量。

【讨论】:

猜你喜欢
  • 2016-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-12
  • 1970-01-01
相关资源
最近更新 更多