创建浏览器和节点兼容的Javascript库

创建浏览器和节点兼容的Javascript库,javascript,node.js,Javascript,Node.js,我正在尝试创建一个javascript库,我希望它能够与浏览器和节点兼容。但是,节点API中提供了一些浏览器中没有的功能(如压缩)。我知道可以用javascript编写此功能,这样它就可以实现交叉兼容,但节点本机压缩可能会执行得更好,因为它的级别要低得多 我应该如何在浏览器兼容代码和使用节点API的代码之间进行划分 在我看来,我可以做以下事情之一: 制作两个单独的脚本,一个用于节点,一个用于浏览器 让我的代码了解它所处的环境,并采取相应的行动 使我的所有代码都相同,但失去了我在node中可能获

我正在尝试创建一个javascript库,我希望它能够与浏览器和节点兼容。但是,节点API中提供了一些浏览器中没有的功能(如压缩)。我知道可以用javascript编写此功能,这样它就可以实现交叉兼容,但节点本机压缩可能会执行得更好,因为它的级别要低得多

我应该如何在浏览器兼容代码和使用节点API的代码之间进行划分

在我看来,我可以做以下事情之一:

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

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

我知道这是一个老问题,但是,今天,这是很容易解决的。Browserify允许您使用
require()
语法编写nodejs模块,并将其轻松转换为浏览器代码

他们甚至移植了您提到的用于处理它的
zlib
,这样依赖性就可以了


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

我的偏好是你的第一个建议。我的第二个偏好是你的第二个建议。我不会做第三个。我可能会使用RequireJS及其节点适配器。这将允许我至少分享一些代码。@nnnnnnnn我也对找到这个问题的解决方案感兴趣。是否有任何方法可以确保Javascript库与多个Javascript实现(如Rhino、Node.js和浏览器端Javascript)一起工作?请使用。没有异步垃圾。您还可以抽象浏览器不兼容的部分(即用于压缩的节点zlib,用于浏览器的浏览器兼容版本),或者只添加一个选项。这个问题有帮助吗?