Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打包需要jQuery的JavaScript库的最佳方法?_Javascript_Jquery_Requirejs - Fatal编程技术网

打包需要jQuery的JavaScript库的最佳方法?

打包需要jQuery的JavaScript库的最佳方法?,javascript,jquery,requirejs,Javascript,Jquery,Requirejs,我正在编写一个非常基本的JavaScript库,它使用jQuery的$.ajax()函数 我应该如何管理这种依赖关系?我是否应该指示我的库的用户自己包括jQuery?我应该使用像RequireJS或脚本标记插入这样的东西在库中加载jQuery吗?如果后者更好,那么如果用户已经在使用jQuery,我如何在不引起冲突的情况下执行此操作?我建议您建议用户首先包括jQuery。如果让我选择任何一个例子,您将看到这是一种真正使用过的方法(例如.net framework)我认为这有点取决于您是否有更多的依

我正在编写一个非常基本的JavaScript库,它使用jQuery的$.ajax()函数


我应该如何管理这种依赖关系?我是否应该指示我的库的用户自己包括jQuery?我应该使用像RequireJS或脚本标记插入这样的东西在库中加载jQuery吗?如果后者更好,那么如果用户已经在使用jQuery,我如何在不引起冲突的情况下执行此操作?

我建议您建议用户首先包括jQuery。如果让我选择任何一个例子,您将看到这是一种真正使用过的方法(例如.net framework)

我认为这有点取决于您是否有更多的依赖项,而不是jQuery

如果jQuery是您唯一的依赖项,并且您的库实际上不需要它自己的模块依赖项系统,那么我不推荐RequireJS。只需检查库中是否存在jQuery,否则将抛出一个错误


但是,如果您希望创建一个灵活且可维护的库,我建议您使用一些模块加载器(如RequireJS)。这也为您提供了使用一个允许您组合和打包库的优势

我最终编写了自己的函数来获取JSON数据,正如原始帖子中推荐的那样。感谢所有回复的人。关于JavaScript库依赖性的指导是非常有价值的,尽管我走了另一条路

我将其用作编写自己的函数以获取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。这是很常见的,它将强调他们需要考虑在他们自己的代码中的任何不兼容。我建议让你的库抛出一个异常,如果没有包含jQuery,并且使用一个方法来重排jQuery。自动将jQuery与之捆绑在一起,对于已经包含jQuery的情况,可能会比要求它们自己包含jQuery更令人头痛。如果您的库需要的只是
$.ajax
,那么只需执行您自己的XMLHttpRequests即可。很抱歉,只为XHR而要求jQuery是愚蠢的。@sillylittleme要求所有jQuery的缺点是什么?据我所知,大多数最终用户已经拥有jQuery缓存。我还需要考虑其他性能因素吗?@FallingPlates:下载太多了。jQuery用户喜欢到处说每个人都已经“拥有”了jQuery,但这并不是那么简单。浏览器的缓存可能有jQuery,但如果有,问题是哪个版本?来自哪个CDN?jQuery有几十个版本,由至少3个主要CDN托管。浏览器的缓存是有限的。充其量只能说是命中或未命中。XHR是一个非常小的部分。如果你不想自己做,我建议你找一个只做XHR的库,或者至少是模块化的库,这样你就可以只加载你需要的部分。记住,如果你也需要的话,这在旧版IE中是行不通的。谢谢你的反馈,@blockhead。什么部分破坏了兼容性?刚才看到我的最后一个问题在上面的参考资料中得到了回答。