【问题标题】:Making a browser and node compatible Javascript library制作浏览器和节点兼容的 Javascript 库
【发布时间】:2012-03-04 00:52:18
【问题描述】:

我正在尝试制作一个我希望与浏览器和节点兼容的 javascript 库。但是,节点 API 中提供了一些浏览器未提供的功能(例如压缩)。我知道可以在 javascript 中编写此功能,以便交叉兼容,但节点本机压缩可能会执行得更好,因为它的级别要低得多。

我应该如何区分浏览器兼容的代码和使用节点 API 的代码?

在我看来,我可以执行以下操作之一:

  • 制作 2 个单独的脚本,一个用于节点,一个用于浏览器
  • 让我的代码弄清楚它所处的环境并采取相应的行动
  • 使我的所有代码都相同,但失去了我在 node 中本来可以得到的一些性能改进

我应该怎么做才能解决这个问题?

【问题讨论】:

  • 我的偏好是您的第一个建议。我的第二个偏好是你的第二个建议。我不会做第三个。
  • 我可能会使用 RequireJS 及其 Node 适配器。这将允许我分享至少一些代码。
  • @nnnnnn 我也有兴趣找到解决此问题的方法。有什么方法可以确保一个 Javascript 库与多个 Javascript 实现(例如 Rhino、Node.js 和浏览器端 Javascript)一起工作?
  • 使用github.com/component/component。没有异步废话。您还可以抽象浏览器不兼容的部分(即用于压缩的节点 zlib,浏览器的浏览器兼容版本)或者只是添加一个 shim
  • 这个问题有帮助吗? stackoverflow.com/questions/3225251/…

标签: javascript node.js


【解决方案1】:

我知道这是一个老问题,但是,今天使用Browserify 可以轻松解决。 Browserify 让您可以使用require() 语法编写 nodejs 模块,并将它们轻松转换为浏览器投诉代码!

他们甚至移植了你提到的 zlib 来使用它,所以这种依赖是可以的。

我希望这对未来的读者有所帮助,browserify 帮助了我:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 2015-08-07
    • 2014-09-12
    • 2015-11-06
    相关资源
    最近更新 更多