将外部JavaScript库转换为Node.js模块

我碰到了sim.js ,一个用于离散事件模拟的库,我认为在学习node.js的时候使用会很有趣。 这是一个单一的JavaScript文件,没有依赖于其他库或浏览器。

在我的代码库中包含这个最好的做法是什么? 将.js保存到磁盘,并将其转换为标准节点模块?

即:

// ---sim.js var Sim = function () { this.simTime = 0; this.entities = []; } Sim.Event = function (name) { this.name = name; }; // ... functions continue module.exports = Sim; // --- main.js var Sim = require('./sim'); var sim = new Sim(); var trafficLights = [new Sim.Event("North-South Light"), new Sim.Event("East-West Light")]; 

还是有更简单的方法,不需要修改/模块化原始的js?

所以是的,如果你只是想做这个工作,你可以保存到磁盘。 看起来Sim是为浏览器全局方法devise的,这意味着它不知道节点模块必须支持的CommonJS模式。 所以你可以添加像你上面module.exports = Sim; 上面的代码片段,这基本上会让你启动和运行。

如果你想让这个项目支持node / CommonJS,你可以给他们发一个补丁。 许多在浏览器中开始使用的库不得不增加对包pipe理器的支持,例如requirejs,commonjs,amd,bower,component等。例如, 当前库支持很多不同types的用途,并且可以看到很多必要的configuration和胶水代码的位,使其工作如此广泛。

我不会太在意“最佳实践”,因为整个空间现在是一个混乱的混乱,但我会指出,moment.js是一个在许多不同的环境和包装系统中运行良好的项目的好例子。