Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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
Javascript 支持多个JS库_Javascript_Jquery_Dojo - Fatal编程技术网

Javascript 支持多个JS库

Javascript 支持多个JS库,javascript,jquery,dojo,Javascript,Jquery,Dojo,我已经使用Dojo开发了我的一个模块。它进行得非常顺利,我在Dojo中做了很多自定义插件和服务器支持,以允许AJAX调用、RPC+SMD与我的服务器通信 然而,现在我开始了解用户方面的事情,我看到jQuery有一些非常好的已经构建的插件。您认为可以现实地支持这两个JS库,而不会造成大问题吗 我可以实现什么样的集成?有人有这方面的经验吗 我可能在Dojo中为我的管理面板写过30k行的代码…当使用两个库(我确信,这两个库都是为自己设计的)时,您有两个主要担心: 一个图书馆会影响另一个图书馆 依赖于两

我已经使用Dojo开发了我的一个模块。它进行得非常顺利,我在Dojo中做了很多自定义插件和服务器支持,以允许AJAX调用、RPC+SMD与我的服务器通信

然而,现在我开始了解用户方面的事情,我看到jQuery有一些非常好的已经构建的插件。您认为可以现实地支持这两个JS库,而不会造成大问题吗

我可以实现什么样的集成?有人有这方面的经验吗

我可能在Dojo中为我的管理面板写过30k行的代码…

当使用两个库(我确信,这两个库都是为自己设计的)时,您有两个主要担心:

  • 一个图书馆会影响另一个图书馆
  • 依赖于两个库会使页面膨胀

  • 在这种情况下,我敢打赌1不会发生。尽管#2仍然是一个问题。

    jQuery非常擅长于不干扰内置javascript对象的原型(与原型不同),这使得它可以很容易地与其他库一起使用

    潜在冲突的一个来源是jQuery使用
    $
    作为
    jQuery
    的快捷方式。我不是dojo用户,但如果这与dojo在某些方面存在冲突,则有必要解决这一问题

    也就是说,我认为您最好看看这些jquery插件,重写它们并将它们移植到dojo。我相信dojo社区会很感激它,它会给你经验。这也会使您的应用程序在腰部区域更苗条

    编辑:我注意到有几个答案使添加额外库的下载速度变得微不足道。我对此持保留态度


    作为开发人员,我们往往只看到通过本地主机或从100Mbit LAN上的开发服务器下载库所需的额外10ms。从加利福尼亚到弗吉尼亚,尤其是从美国到欧洲,下载速度并不是那么简单。此外,它还增加了客户端javascript引擎的负担。如果他们在Safari或Chrome上使用1-2年的好电脑,这可以忽略不计,但如果他们在IE、FF2或某些版本的FF3上,差异可能会很严重,或者至少是可以测量的。

    我在几个项目上使用了Prototype、jQuery和ExtJS(出于各种原因),并且几乎总是同时使用jQuery和ExtJS。限制麻烦的一种方法是避免在任何给定页面中混合使用库—将管理页面保留为dojo,将新页面保留为jQuery—但这有什么乐趣呢?:-)


    在集成jQuery和ExtJS时,我发现很少有问题。我为类/对象/继承选择了一个框架(我使用ExtJS),并坚持使用它。然后,我使用ExtJS创建大多数小部件,并使用jQuery进行低级DOM操作和简单小部件。同样,我不记得在使用两个库时遇到过冲突,但FireBug是一个很好的工具,可以发现此类冲突的可疑原因。

    大多数流行的JS库都有自己的全局快捷方式。JQuery可以设置为不初始化
    $
    变量。撇开JQuery不谈,我听说Dojo和Prototype可以一起工作而不会产生冲突

    无论您决定使用哪种JS库组合,获取有关兼容性问题的信息的最佳方法是点击与您将要相互使用的JS库相关的邮件列表

  • noConflict()具有相当简单的互操作性,因为您可以重新定义
    $
    。正如hobodave提请注意的那样,Prototype在这方面很糟糕(因为您不能简单地用Prototype重新定义$)。我不确定,但我认为Dojo本身并没有任何问题,它可以很好地与其他人一起开箱即用(如果不是这样,请有人纠正我)

    我遇到的最大问题是在特定框架中编写的“必须具备”库的数量,例如用于复杂图形的库,这些库从零开始就很难实现


    膨胀是不好的,但与图像大小相比,JS脚本大小的问题可以忽略不计(因为它太小,连接速度太快,只有在第一页加载时,如果缓存正确,这几乎不是问题)。我想说的是,维护性更令人担忧,这是一个决定是否需要插件的问题,该插件必须是您没有时间或意愿在您使用的任何框架中重新设计的插件。

    我认为Dojo影响jQuery的唯一方式是Dojo.parse()。我不会那么担心的。我非常关心数字2和膨胀。如果不同的库能够在增强同一元素(事件处理程序、样式、修改内容等)甚至DOM树的同一分支方面进行合作,我会感到惊讶。如果在jQuery中使用event delegation-
    live()
    ,我也会小心出现问题。谢谢hobodave。我想你可能是对的。我确实非常喜欢Dojo,我只是不知道为什么我一开始选择它,因为现在大家都使用的标准库是jQuery。这有点令人沮丧,但是,Dojo社区绝对是很棒的,而且#Dojo是一个很棒的地方!我认为Dojo只是被低估了,jQuery有更多的动力(这意味着更多的插件,这意味着更多的用户,这意味着更多…)。出于这个原因,我仍然主要使用jQuery,但我不担心使用Dojo!JS库的名称空间不是主要问题。事实上,它们都操作相同的DOM。在混合库时,我希望开发时间的减少与测试和维护工作的增加相匹配。Dojo还非常小心地避免对象原型和全局名称,因此这两个库在这方面不应该有冲突,我已经看到了lib