我希望使用两个项目,但我的首要任务是从CDN网络加载它们,所以在我的配置路径中我需要在垫片中加载bowser,jquery和html5shiv以及facebook。
我的配置路径中urlArgs的值专门用于jquery以提供子资源完整性(SRI)。
但urlArgs会附加到所有链接上,并且jquery会意外地工作。
是否有办法在存在其他路径时使用路径特定的urlArgs?
我的配置如下。
require.config({
enforceDefine:true,
urlArgs: 'integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="&crossorigin="anonymous"',
shim: {
facebook : {
exports: 'FB'
}
},
paths: {
facebook: 'http://connect.facebook.net/en_US/sdk',
jquery: [
'https://code.jquery.com/jquery-2.2.4.min'
// 'jquery',
],
bowser:[
'https://cdnjs.cloudflare.com/ajax/libs/bowser/1.0.0/bowser.min',
'bowser-min'
],
html5shiv:[
'https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min',
'html5shiv'
]
}
});
require(['loginsignupslider','featuredslider','arrangehomepage','bowser'],function(a,b,c,bowser){
if (bowser.msie && bowser.version < 9) {
require(['html5shiv']);
}
});
define(['facebook','jquery'],function(FB,$){
FB.init({
appId : '1693650154217810',
status : true,
cookie : true,
xfbml : true,
oauth : true,
version : 'v2.5' // use graph api version 2.5
});
FB.Event.subscribe('auth.statusChange', function(response) {
if (response.authResponse&&response.status==='connected'){
window.location.href = "http://localhost/influenza/scripts/loginset.php";
}
});
$("#influencer-login-social >:first-child a").on("click",function(){
FB.getLoginStatus(function(response) {
if (response.status !== 'connected') {
FB.login(function(response) {},{scope:'public_profile,email,user_friends'});
}
}, true)
});
});
答案 0 :(得分:1)
您可以编写自己的函数来测试模块ID或URL,并返回相应的URL参数以添加或返回空字符串。根据{{3}}:
从RequireJS 2.2.0开始,
urlArgs
可以是一个函数。如果是函数,它将接收模块ID和URL作为参数,并且它应该返回一个字符串,该字符串将添加到URL的末尾。如果没有args,则返回空字符串。一定要注意添加&#39;?&#39;或者&#39;&amp;&#39;取决于URL的现有状态。例如:requirejs.config({ urlArgs: function(id, url) { var args = 'v=1'; if (url.indexOf('view.html') !== -1) { args = 'v=2' } return (url.indexOf('?') === -1 ? '?' : '&') + args; } });