我的情况是我必须在同一页面上运行两个版本的jQuery(基本上,有一个运行1.4.2的网站,我有一个运行需要1.8.2脚本的书签我知道这不是一个好主意,但我现在坚持不懈)。
现有版本为1.4.2,所需的较新版本为1.8.2。
我正在使用require.js并看过帖子in this question here,但不太明白什么是最好的方式:
在我的情况下,我有一个模块main.js:
(function () {
var root = this;
require.config({
baseUrl: "http://localhost:9185/scripts/app/"
});
define3rdPartyModules();
loadPluginsAndBoot();
function define3rdPartyModules() {
define('jquery', [], function () { return root.jQuery.noConflict(true); });
define('ko', [], function () { return root.ko; });
}
function loadPluginsAndBoot() {
requirejs([], boot);
}
function boot() {
require(['bootStrapper'], function (bs) { bs.run(); });
}
})();
然后是其他一些与此类似的模块:
define('bootStrapper', ['jquery', 'presenter', 'repository', 'dataPrimer'],
function ($, presenter, repository, dataPrimer) {
//some stuff here
我是requirejs的新手,在使用版本1.4.2加载main.js之前加载它,如下所示:
$.getScript("http://localhost:9185/bundles/jsextlibs?v=GOyDBs-sBDxGR5AV4_K-m- OK9DoE0LGrun5FMPyCO9M1", function () {
$.getScript("http://localhost:9185/Scripts/lib/require.js", function () {
$.getScript("http://localhost:9185/bundles/jsapplibs?v=9TJUN0_624zWYZKwRjap4691P170My5FUUmi8_fzagM1");
$.getScript("http://localhost:9185/Scripts/main.js");
});
});
有人可以告诉我如何修改我的代码,以便我的所有模块都可以使用版本1.8.2,而不会干扰已在1.4.2上运行的代码。
由于
戴维
答案 0 :(得分:3)
var reqOne = require.config({
context: "version1",
baseUrl: 'scripts/',
paths: {
jquery: 'lib/jquery.min',
}
});
var reqTwo = require.config({
context: "version2",
baseUrl: 'scripts/',
paths: {
jquery: 'lib/jquery.modern',
}
});
reqOne(["helper/util"], function(require,util) {
//This function is called when scripts/helper/util.js is loaded.
//If util.js calls define(), then this function is not fired until
//util's dependencies have loaded, and the util argument will hold
//the module value for "helper/util".
// intheutil(); //This was done
console.log('util loaded');
});
reqOne(['require','jquery'],function(require,$){
console.log( $().jquery );
});
reqOne(['require','jquery'],function(require,jq){
console.log( jq().jquery );
});
reqOne(['require','jquery'],function(require,$){
console.log( $().jquery);
});
reqTwo(['require','jquery'],function(require,$){
console.log( $().jquery );
});
console.log('If no errors mean success!');
以上是我在main.js中使用的内容。有关完整实现的详细信息,请参阅我在github中的实现。 github.com
这里jquery.min是jquery版本1.x. 和jquery.modern是jquery版本2.x
我使用过console.log。因此,请在启用浏览器控制台的情以上答案基于Require.js的文档。所以我认为它必须是你案件的解决方案。
这是我的推荐。 Require.js