Javascript 将脚本与requirejs分离/防止adBlocker停止下载

Javascript 将脚本与requirejs分离/防止adBlocker停止下载,javascript,jquery,backbone.js,requirejs,marionette,Javascript,Jquery,Backbone.js,Requirejs,Marionette,我构建了一个助手,可以动态加载包含双击广告的iframe。问题是,如果我在require.js中调用helper,并且启用了adBlock,主干将被阻止加载。我尝试将其移动到一个自动执行函数,但它需要下划线和jquery 助手: (define('helpers/advertisements', [ 'jquery', 'lodash' ], )function($, _) { 'use strict'; var Advertisement = { initializ

我构建了一个助手,可以动态加载包含双击广告的iframe。问题是,如果我在require.js中调用helper,并且启用了adBlock,主干将被阻止加载。我尝试将其移动到一个自动执行函数,但它需要下划线和jquery

助手:

(define('helpers/advertisements', [
  'jquery',
  'lodash'
], )function($, _) {

  'use strict';

  var Advertisement = {
    initialize: function() {
        console.log('init');
    }
  }
 return Advertisement;

});
(function($, _) {

      'use strict';

  var Advertisement = {
    initialize: function() {
        console.log('init');
    }
  }

 Advertisement.initialize()

})($, _);
应用布局:

'use strict';

define('master/views/AppLayout', [
  'backbone',
  'marionette',
  'helpers/advertisements'
], function(Backbone, Marionette, AdHelper) {

  // Define the application layout specific regions
  return Backbone.Marionette.Layout.extend({

    onRender: function() {
      AdHelper.initialize();
    }

  });

});
以下是我如何将其解耦的:

html:

助手:

(define('helpers/advertisements', [
  'jquery',
  'lodash'
], )function($, _) {

  'use strict';

  var Advertisement = {
    initialize: function() {
        console.log('init');
    }
  }
 return Advertisement;

});
(function($, _) {

      'use strict';

  var Advertisement = {
    initialize: function() {
        console.log('init');
    }
  }

 Advertisement.initialize()

})($, _);
1.)对我来说,什么是解耦助手函数的最佳方法?


2.)还是在require中使用延迟/承诺更好?

尝试在“初始化后”回调中内联要求它。差不多

MyApp.on("initialize:after", function(){
  require('helpers/advertisements', function(AdHelper){
    AdHelper.initialize();
  });
});

谢谢这是一个很好的方法来确保我的电话发生在应用程序初始化之后。我不得不使用的第二步是从广告中重命名我的文件,因为adblocker似乎在寻找这些电话。