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

标签 javascript node.js

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

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

即:

// ---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 是为浏览器全局方法设计的,这意味着它对 Node 模块必须支持的 CommonJS 模式一无所知。所以你可以在上面的 module.exports = Sim; 片段中添加你喜欢的那些,这基本上会让你启动并运行。

如果你想让这个项目支持 node/CommonJS,你可以给他们发送一个补丁。许多在浏览器中开始使用的库必须添加对包管理器的支持,例如 requirejs、commonjs、amd、bower、component 等。例如,moment库支持许多不同类型的使用,您可以看到许多配置和粘合代码,以使其如此广泛地工作。

我不会太担心“最佳实践”,因为整个空间现在一团糟,但我会指出 moment.js 是一个很好的项目示例,它可以在许多不同的环境中运行良好,并且包装系统。

关于javascript - 将外部 JavaScript 库转换为 Node.js 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21171152/

相关文章:

git - 通常通过 .gitignore 排除哪些特定于 Node.JS 的文件和文件夹?

javascript - 未使用 jQuery 验证器检查时的 Css 样式复选框

javascript - 事件链接在重新加载后丢失样式

Javascript 创建元素并添加 HTML

javascript - 为什么我不能在 Node.js shell 中要求模块?

javascript - 使用加密nodejs解密大文件

node.js - package-lock.json 文件,包含 "optional": true 的包

javascript - DataTables服务器端处理添加html内容选择标签不触发javascript

javascript - 使用 AngularJS 将输入值从 ng-repeat 插入数组

javascript - nodemon,babel-node : how to set environment variable?