我建立了一个可以动态加载包含双击广告的iframe的助手。问题是,如果我在require.js内部调用帮助程序,并且启用adBlock,则会阻止Backbone加载。我尝试将其移至自执行函数,但需要下划线和jquery。

帮手:

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

  'use strict';

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

});


AppLayout:

'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:<script src="helpers/advertisments.js"></script>

帮手:

(function($, _) {

      'use strict';

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

 Advertisement.initialize()

})($, _);


1.)解耦助手功能的最佳方法是什么?

2.)还是在需求范围内使用延迟/承诺会更好?

最佳答案

尝试在“初始化后”回调中内联要求它。就像是

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

关于javascript - 从requirejs解耦脚本/防止adBlocker停止下载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21080274/

10-11 11:35