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


Posted in Javascript onAugust 11, 2015

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处理文件请求加载异步同步功能有所帮助。

Javascript 相关文章推荐
jQuery源码分析-03构造jQuery对象-工具函数
Nov 14 Javascript
Javascript学习笔记之相等符号与严格相等符号
Nov 23 Javascript
更高效的使用JQuery 这里总结了8个小技巧
Apr 13 Javascript
js实现的万能flv网页播放器代码
Apr 30 Javascript
JavaScript实现时间倒计时跳转(推荐)
Jun 28 Javascript
完美的js div拖拽实例代码
Sep 24 Javascript
详解js的六大数据类型
Dec 27 Javascript
微信小程序实现倒计时60s获取验证码
Apr 17 Javascript
vue组件之间通信实例总结(点赞功能)
Dec 05 Javascript
js代码实现轮播图
May 04 Javascript
详解Vue中的MVVM原理和实现方法
Jul 15 Javascript
原生JS生成指定位数的验证码
Oct 28 Javascript
省市区三级联动下拉框菜单javascript版
Aug 11 #Javascript
高性能JavaScript DOM编程(1)
Aug 11 #Javascript
jQuery中prepend()方法使用详解
Aug 11 #Javascript
javascript实现数组中的内容随机输出
Aug 11 #Javascript
javascript弹出拖动窗口
Aug 11 #Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
Aug 11 #Javascript
javascript实现五星评价代码(源码下载)
Aug 11 #Javascript
You might like
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
php关联数组快速排序的方法
2015/04/17 PHP
浅谈php的优缺点
2015/07/14 PHP
PHP技术开发微信公众平台
2015/07/22 PHP
PHP strcmp()和strcasecmp()的区别实例
2016/11/05 PHP
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
解析javascript 实用函数的使用详解
2013/05/10 Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
2015/03/27 Javascript
关于js里的this关键字的理解
2015/08/17 Javascript
jQuery+HTML5实现图片上传前预览效果
2015/08/20 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
js实现5秒倒计时重新发送短信功能
2017/02/05 Javascript
vue vuex vue-rouert后台项目——权限路由(适合初学)
2017/12/29 Javascript
echarts同一页面中四个图表切换的js数据交互方法示例
2018/07/03 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
2019/05/18 Javascript
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
WebStorm无法正确识别Vue3组合式API的解决方案
2021/02/18 Vue.js
[01:32:10]NAVI vs VG Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
Pyramid添加Middleware的方法实例
2013/11/27 Python
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
seek引发的python文件读写的问题及解决
2019/07/26 Python
印尼网上商店:Alfacart.com
2019/03/11 全球购物
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
Weblogic的布署方式
2013/08/23 面试题
法律工作求职自荐信
2013/10/31 职场文书
广告设计专业自荐信范文
2013/11/14 职场文书
《颐和园》教学反思
2014/02/26 职场文书
电钳工人个人求职信
2014/05/10 职场文书
档案信息化建设方案
2014/05/16 职场文书
企业安全隐患排查治理制度
2015/08/05 职场文书
品德与社会教学反思
2016/02/24 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers
python实现求纯色彩图像的边框
2021/04/08 Python
SpringBoot 集成短信和邮件 以阿里云短信服务为例
2022/04/22 Java/Android