如何在require.config中的一个CDN链接上使用urlArgs,存在2个或更多路径以包含在CDN中

时间:2016-06-09 15:42:37

标签: jquery requirejs cdn

我希望使用两个项目,但我的首要任务是从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)
   });
});

1 个答案:

答案 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;
    }
});