Skip to content
  • P
    Projects
  • G
    Groups
  • S
    Snippets
  • Help

李洋 / 消息系统

  • This project
    • Loading...
  • Sign in
Go to a project
  • Project
  • Repository
  • Issues 0
  • Merge Requests 0
  • Pipelines
  • Wiki
  • Snippets
  • Settings
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • Files
  • Commits
  • Branches
  • Tags
  • Contributors
  • Graph
  • Compare
  • Charts
Find file
Normal viewHistoryPermalink
Switch branch/tag
  • CMS-Message
  • public
  • js
  • module.js
module.js 1.75 KB
李洋's avatar
Initial commit
60b5dc25
 
李洋 committed 7 years ago
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
Module = {};

(function () {
  var modules = {};
  var queue   = [];
  var alias   = {};

  function queueCallback()
  {
    for (var i in queue) {
      var j = 0;
      for (j = 0; j < queue[i].depend.length; j++) {
        if (!modules[queue[i].depend[j]])
          break;
      }

      if (j < queue[i].depend.length)
        continue;

      queue[i].callback();
      delete queue[i];
    }

    var newq = [];
    for (var i in queue) {
      if (queue[i])
        newq.push(queue[i])
    }

    queue = newq;
  }

  function scriptLoaded(js)
  {
    return function () {
      modules[js] = true;
      queueCallback();
    };
  }

  Module.call = function (callback, jss) {
    var dep = [];
    for (var i in jss) {
      var js = jss[i];
      if (alias[js])
        js = alias[js];

      if (modules[js])
        continue;
      dep.push(js);
    }

    if (dep.length == 0) {
      callback();
      return;
    }

    queue.push({callback: callback, depend: dep});

    $.ajaxSetup({cache: true});
    for (var i in dep) {
      if (modules[dep[i]] !== undefined)
        continue;

      modules[dep[i]] = false; // 标记一下

      $.getScript(dep[i], scriptLoaded(dep[i]));
    }
    $.ajaxSetup({cache: false});
  };

  Module.preLoad = function (jss) {
    $.ajaxSetup({cache: true});
    for (var i in jss) {
      var js = jss[i];
      if (alias[js])
        js = alias[js];

      if (modules[js] === undefined )
        $.getScript(js, scriptLoaded(js));
    }
    $.ajaxSetup({cache: false});
  };

  Module.init = function ()
  {
    $('script').each(function (i, item) {
      var src = $(item).attr('src');
      if (src != '')
        modules[src] = true;
    });
  };

  Module.alias = function (jss) {
    $.extend(alias, jss);
  };
})();

$(Module.init);