首页 > 编程 > JavaScript > 正文

tuzhu_req.js 实现仿百度图片首页效果

2019-11-20 11:51:52
字体:
来源:转载
供稿:网友

tuzhu_req.js 处理文件请求加载异步同步功能,仿效百度图片首页效果制作

/*土著人开发的require组件 @土著人 (http://www.tuzhuren.com)*/! function() {  function e() {}  Function.prototype.bind || (Function.prototype.bind = function(t) {    var n = this;    if ("function" != typeof n)      throw new TypeError("Function.prototype.bind called on incompatible " + n);    var o = r.call(arguments, 1),      i = function() {        if (this instanceof i) {          var e = n.apply(this, o.concat(r.call(arguments)));          return Object(e) === e ? e : this;        }        return n.apply(t, o.concat(r.call(arguments)));      };    return n.prototype && (e.prototype = n.prototype, i.prototype = new e, e.prototype = null), i;  });  var t = Array.prototype,    r = t.slice;}();var require, define;! function(e) {  function t(e, t) {    if (!(e in u)) {      u[e] = !0;      var r = document.createElement("script");      if (t) {        var o = setTimeout(t, require.timeout);        r.onerror = function() {          clearTimeout(o), t()        }, r.onreadystatechange = function() {          "complete" == this.readyState && clearTimeout(o)        }      }      return r.type = "text/javascript", r.src = e, n.appendChild(r), r;    }  }   function r(e, r, n) {    var i = o[e] || (o[e] = []);    i.push(r);    var a, u = c[e] || {},      s = u.pkg;    a = s ? p[s].url : u.url || e, t(a, n && function() {      n(e);    });  }  function isFunction(it) {    return Object.prototype.toString.call(it) === '[object Function]';  }  function isArray(it) {    return Object.prototype.toString.call(it) === '[object Array]';  }  var n = document.getElementsByTagName("head")[0],    o = {},    i = {},    a = {},    u = {},    c = {},    p = {};  define = function(name, deps, callback) {    if (isArray(deps) && isFunction(callback)) {      deps = callback;    }    i[name] = deps;    var r = o[e];    if (r) {      for (var n = 0, a = r.length; a > n; ++n)        r[n]();      delete o[name];    }  }, require = function(e) {    e = require.alias(e);    var t = a[e];    if (t)      return t.exports;    var r = i[e];    if (!r)      return false;    t = a[e] = {      exports: {}    };    var n = "function" == typeof r ? r.apply(t, [require, t.exports, t]) : r;    return n && (t.exports = n), t.exports;  }, require.async = function(t, n, o) {    function a(e) {      for (var t = e.length - 1; t >= 0; --t) {        var n = e[t],          p = c[n];        p && "deps" in p && a(p.deps), n in i || n in s || (s[n] = !0, l++, r(n, u, o));      }    }     function u() {      if (0 == l--) {        var r, o, i = [];        for (r = 0, o = t.length; o > r; ++r)          try {            i[r] = require(t[r])          } catch (a) {}        n && n.apply(e, i);      }    }    "string" == typeof t && (t = [t]);    for (var p = t.length - 1; p >= 0; --p)      t[p] = require.alias(t[p]);    var s = {},      l = 0;    a(t), u();  }, require.resourceMap = function(e) {    var t, r;    r = e.res;    for (t in r)      r.hasOwnProperty(t) && (c[t] = r[t]);    r = e.pkg;    for (t in r)      r.hasOwnProperty(t) && (p[t] = r[t]);  }, require.loadJs = function(e) {    t(e);  }, require.loadCss = function(e) {    if (e.content) {      var t = document.createElement("style");      t.type = "text/css", t.styleSheet ? t.styleSheet.cssText = e.content : t.innerHTML = e.content, n.appendChild(t);    } else if (e.url) {      var r = document.createElement("link");      r.href = e.url, r.rel = "stylesheet", r.type = "text/css", n.appendChild(r);    }  }, require.alias = function(e) {    return e  }, require.timeout = 5e3, define.amd = {    jQuery: !0,    version: "1.0.0"  }}(this);! function() { (function() {   var widgets = [],     nameIdxMap = {},     callbacks = [],     remainings = 0;   require.widget = {     register: function(name) {       var idx = nameIdxMap[name];       if (idx == undefined) {         nameIdxMap[name] = widgets.length;         widgets.push(1);         remainings++;       } else {         widgets[idx]++;       }     },     ready: function(callback, ctx) {       callbacks.push({         func: callback,         context: ctx       });       if (remainings < 1) {         _ready();       }     },     loaded: function(name) {       var idx = nameIdxMap[name],         num = widgets[idx] - 1;        widgets[idx] = num;       if (num == 0 && remainings) {         remainings--;       }        if (remainings < 1) {         _ready();       }     }   };    function _ready() {     var callback;     while (callback = callbacks.pop()) {       callback.func.call(callback.ctx);     }   } })();}();

希望本文能够给大家学习使用javascript处理文件请求加载异步同步功能有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表