如何通过 RequireJS 加载 jQuery Migrate for jQuery?
How to load jQuery Migrate for jQuery via RequireJS?
我可以通过 RequireJS 加载 jQuery 迁移吗?我不明白如何正确处理时间。看这个例子:
require([
'jquery',
'jqmigrate'
], function ($) {
if ($.browser.msie) {...}
});
jqmigrate
不可能在 jquery
之前加载吗?另外,我不想在每个模块中显式加载 jqmigrate
。有什么方法可以在 require.config
中执行此操作,以便在需要 jQuery 时自动加载 jqmigrate
?
您需要一些东西:
- 确保 jqmigrate 依赖于
jquery
.
- 您可以编写一个包含两者的包装器模块,return jquery,这样您的 require.config 看起来像:
jquery-wrapper.js:
define(['jquery-src', 'jqmigrate'], function ($) {
return $;
})
require.config
{
paths: {
'jquery-src' : '/path/to/jquery',
'jqmigrate': '/path/to/jqmigrate',
'jquery': '/path/to/jquery-wrapper'
}
}
使用垫片对我有用。我确实被卡住了,因为我对其进行了复数化调整; shim
requirejs.config({
paths: {
'jquery': '//code.jquery.com/jquery-2.1.4',
'jquery-migrate': '//code.jquery.com/jquery-migrate-1.2.1'
},
shim: {
'jquery-migrate': { deps: ['jquery'], exports: 'jQuery' },
'foo': ['jquery']
}
});
require(['jquery-migrate', './foo'], ($, foo) => {
console.log('bootstrapped', $, foo);
});
jQuery Migrate 3.0.1 目前有一个缺陷,导致它无法用于 RequireJS 或任何 AMD 加载器。在实施接受的答案之前需要对 UMD 片段进行更改:
define( [ "jquery" ], function ($) {
return factory($, window);
});
详情和解决方法在here.
jquery-迁移-wrapper.js
define(['jquery', 'jquery-migrate'], function ($) {
// additional initialization logic can be added here
$.UNSAFE_restoreLegacyHtmlPrefilter();
return $;
})
需要-config.js
require.config({
...otherConfigOptions,
shim: {
...otherShimSettings,
'jquery-migrate':{deps: ['jquery']},
},
map: {
// provides 'jquery-migrate-wrapper' for all (*) modules that require'jquery'
'*': { 'jquery': 'jquery-migrate-wrapper' },
// but provides the original 'jquery' for 'jquery-migrate-wrapper' and
// 'jquery-migrate'
'jquery-migrate-wrapper': { 'jquery': 'jquery' },
'jquery-migrate': {'jquery': 'jquery'}
}
})
我可以通过 RequireJS 加载 jQuery 迁移吗?我不明白如何正确处理时间。看这个例子:
require([
'jquery',
'jqmigrate'
], function ($) {
if ($.browser.msie) {...}
});
jqmigrate
不可能在 jquery
之前加载吗?另外,我不想在每个模块中显式加载 jqmigrate
。有什么方法可以在 require.config
中执行此操作,以便在需要 jQuery 时自动加载 jqmigrate
?
您需要一些东西:
- 确保 jqmigrate 依赖于
jquery
. - 您可以编写一个包含两者的包装器模块,return jquery,这样您的 require.config 看起来像:
jquery-wrapper.js:
define(['jquery-src', 'jqmigrate'], function ($) {
return $;
})
require.config
{
paths: {
'jquery-src' : '/path/to/jquery',
'jqmigrate': '/path/to/jqmigrate',
'jquery': '/path/to/jquery-wrapper'
}
}
使用垫片对我有用。我确实被卡住了,因为我对其进行了复数化调整; shim
requirejs.config({
paths: {
'jquery': '//code.jquery.com/jquery-2.1.4',
'jquery-migrate': '//code.jquery.com/jquery-migrate-1.2.1'
},
shim: {
'jquery-migrate': { deps: ['jquery'], exports: 'jQuery' },
'foo': ['jquery']
}
});
require(['jquery-migrate', './foo'], ($, foo) => {
console.log('bootstrapped', $, foo);
});
jQuery Migrate 3.0.1 目前有一个缺陷,导致它无法用于 RequireJS 或任何 AMD 加载器。在实施接受的答案之前需要对 UMD 片段进行更改:
define( [ "jquery" ], function ($) {
return factory($, window);
});
详情和解决方法在here.
jquery-迁移-wrapper.js
define(['jquery', 'jquery-migrate'], function ($) {
// additional initialization logic can be added here
$.UNSAFE_restoreLegacyHtmlPrefilter();
return $;
})
需要-config.js
require.config({
...otherConfigOptions,
shim: {
...otherShimSettings,
'jquery-migrate':{deps: ['jquery']},
},
map: {
// provides 'jquery-migrate-wrapper' for all (*) modules that require'jquery'
'*': { 'jquery': 'jquery-migrate-wrapper' },
// but provides the original 'jquery' for 'jquery-migrate-wrapper' and
// 'jquery-migrate'
'jquery-migrate-wrapper': { 'jquery': 'jquery' },
'jquery-migrate': {'jquery': 'jquery'}
}
})