require.js监听器或回调

时间:2015-02-05 01:41:18

标签: requirejs

我正在加载第三方脚本,只是在已加载到的网站上创建叠加层。它工作正常,但使用require.js的网站似乎有间歇性问题,我假设异步加载一些js文件。有没有任何类型的回调或方法在DOM中创建一个模块作为一个监听器来查看require.js是否已完成加载?

我尝试了这个但是甚至没有关闭:

  define(function() {
    alert('test');
    return {};
  });

define('myModule',
    function () {
      var myModule = {
        doStuff:function(){
          console.log('Yay! Stuff');
        }
      };
      return myModule;
  });
console.log(myModule);

1 个答案:

答案 0 :(得分:0)

我最后只是创建了一个辅助的require.config文件,并且如果检测到require则加载带有require的模块,似乎工作正常。

if(typeof require === 'function') {

  var base = 'http://' + someDomainVar;

  function getJSTreeURL() {
    var url = base + '/js/libs/jstree.min';
    return url;
  }

  function getModuleURL() {
    var url = base + '/module';
    return url;
  }

  var reqTwo = require.config({
    context: "instance2",
    baseUrl: "instance2",
    paths: {
      'jq': 'http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min',
      'jqTree': getJSTreeURL(),
      'module': getModuleURL()
    },
    shim: {
      'jq': {
        exports: 'jq'
      },
      'jqTree': {
        deps: ['jq'],
        exports: 'jqTree'
      },
      'module': {
        deps: ['jq', 'jqTree'],
        exports: 'module'
      }

    }
  });

  reqTwo(['require', 'jq', 'jqTree'],
    function(require, jq, jqTree) {

      setTimeout(function() {
        require(['module'],
          function(module) {
            console.log('loaded');
          }
        );
      }, 0);

    });