jQuery / Dojo – 如何将jQuery与Dojo工具包一起使用

如何将jQuery与Dojo工具包一起使用? 我听说过两个库同时使用,jQuery用于DOM相关,Dojo用于UI(dijit),但我找不到任何教程或示例。 如果我加载两个库,我会遇到任何冲突或问题吗?

您可以在彼此旁边使用它们而没有任何问题,因为Dojo不会像其他一些javascript库一样覆盖$。

您可以通过网站头部的脚本标记将jQuery拉入您的应用程序来使用jQuery,不会与dojo冲突。

但是在使用带有dojo的jQuery时要记住一些事情,特别是对于dojo 1.8及其完整的AMD支持。 它更干净( 特别是如果你不能在你的网站的头部拉jQuery )来利用AMD( 异步模块定义 )。 您需要在dojo配置脚本中创建一个包条目才能正确引入框架。 这是一个使用jquery和jquery-ui的库位置的示例…

   

我的文件夹结构在根目录下只有一个libs文件夹,这就是为什么我的基本url有“./”,但你可以轻松地从cdn位置拉出来 。

如果没有此配置条目,jQuery将无法按预期运行,并且您最终可能会在控制台中弹出“ 不是函数 ”错误。

如果你确实使用单独的脚本标签来引入jQuery或其他第三方框架并使用AMD来做同样的事情,那么当你第一次需要 dojo时,你最终会把它拉出来。

您可以使用Dojo的AMD加载程序来加载jQuery。

以下片段甚至将$dojo.query别名并且仍然使用jQuery而没有冲突(我不推荐它,但是!):

  define.amd.jQuery = true; require(["jquery", "dojo/query", "dojo/NodeList-dom"], function(jquery, $) { $("output").style("visibility", "visible"); // using Dojo jquery("#output").css("visibility", "hidden"); // using jQuery }); 

完整的解释和源代码: 使用Dojo 1.7 AMD加载器加载jQuery

例如,您可以命名jQuery,以避免冲突。

检查http://docs.jquery.com/Using_jQuery_with_Other_Libraries

jQuery现在支持AMD很长一段时间了。

您可以使用ADM配置的“paths”属性告诉AMD加载程序在哪里可以找到jQuery:

 var amdconfig = { baseUrl: __AMD_CONFIG_BASE_URL__, packages: [ {name: "dojo", location: "./lib/dojo"}, {name: "app", location: "./app"} ], paths: { jquery: "./lib/jquery/jquery-1.12.4" } }; 

然后,您可以像导入任何其他AMD模块一样将jQuery导入ADM模块,并将其与Dojo模块一起使用:

 define([ "dojo/dom", "jquery" ], function( dom, $ ) { ... }); 

注意

您可以对使用RequireJS而不是Dojo的AMD项目使用相同的配置:

 if (require.config) { // RequireJS require.config(amdconfig); } else { // Dojo require(amdconfig); }