我正在编写一个非常基本的 JavaScript 库,它使用 jQuery 的 $.ajax() 函数。
我应该如何管理这种依赖关系?我应该指示我的库的用户自己包含 jQuery 吗?我应该使用 RequireJS 或脚本标签插入之类的东西在库中加载 jQuery 吗?如果后者会更好,如果用户已经在使用 jQuery,我该如何做到这一点而不引起冲突?
我正在编写一个非常基本的 JavaScript 库,它使用 jQuery 的 $.ajax() 函数。
我应该如何管理这种依赖关系?我应该指示我的库的用户自己包含 jQuery 吗?我应该使用 RequireJS 或脚本标签插入之类的东西在库中加载 jQuery 吗?如果后者会更好,如果用户已经在使用 jQuery,我该如何做到这一点而不引起冲突?
我认为这有点取决于你是否有更多的依赖项,而不是 jQuery。
如果 jQuery 是您唯一的依赖项,并且您的库并不真正需要它自己的模块依赖项系统,我不会推荐 RequireJS。只需检查库中是否存在 jQuery,否则抛出错误。
但是,如果您希望制作一个灵活且可维护的库,我建议您使用一些模块加载器(如 RequireJS)。这也为您提供了使用构建系统的优势,该系统允许您组合和打包您的库
我最终编写了自己的函数来获取 JSON 数据,就像我在原始帖子中推荐的那样。感谢所有回复的人。关于 JavaScript 库依赖关系的指导非常有价值,即使我走的是另一条路。
我使用这个 Stack Overflow 答案作为编写自己的函数来获取 JSON 的指南。我需要同步获取数据,所以我根据另一篇文章中概述的技巧调整了功能。
最后,我的功能看起来像这样。我希望它可以帮助其他人。
var fetchJSON = function(path, callback) {
var httpRequest = new XMLHttpRequest();
httpRequest.open('GET', path, false);
httpRequest.send();
if (httpRequest.readyState === 4) {
if (httpRequest.status === 200) {
var data = JSON.parse(httpRequest.responseText);
if (callback) callback(data);
}
}
}
我建议您建议用户首先包含 jquery。如果您让我选择任何示例,您会发现这是一种真正使用过的方法(例如 .net 框架)