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 相关文章推荐
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
Oct 25 Javascript
JavaScript 学习笔记 Black.Caffeine 09.11.28
Nov 30 Javascript
javascript天然的迭代器
Oct 29 Javascript
详细解读JavaScript的跨浏览器事件处理
Aug 12 Javascript
javascript实现Email邮件显示与删除功能
Nov 21 Javascript
简单的JS控制button颜色随点击更改的实现方法
Apr 17 Javascript
深入理解JavaScript继承的多种方式和优缺点
May 12 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
Feb 22 Javascript
浅谈React Event实现原理
Sep 20 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
Aug 09 Javascript
js实现移动端tab切换时下划线滑动效果
Sep 08 Javascript
原生js实现弹幕效果
Nov 29 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
计数器详细设计
2006/10/09 PHP
开源SNS系统-ThinkSNS
2008/05/18 PHP
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
几个实用的PHP内置函数使用指南
2014/11/27 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
2015/07/04 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
2015/12/22 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
2018/10/15 PHP
javascript 特殊字符串
2009/02/25 Javascript
IE本地存储userdata的一个bug说明
2010/07/01 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
2011/11/14 Javascript
js获取select选中的option的text示例代码
2013/12/19 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
JS实现窗口加载时模拟鼠标移动的方法
2015/06/03 Javascript
javascript实现简单的分页特效
2015/08/12 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
jquery实现全选、全不选以及单选功能
2017/03/23 jQuery
nodejs multer实现文件上传与下载
2017/05/10 NodeJs
vue.js将时间戳转化为日期格式的实现代码
2018/06/05 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
2019/06/27 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
JS删除数组指定值常用方法详解
2020/06/04 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
python模仿网页版微信发送消息功能
2018/02/24 Python
Python检查和同步本地时间(北京时间)的实现方法
2018/12/03 Python
pandas数据筛选和csv操作的实现方法
2019/07/02 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
python tkinter实现连连看游戏
2020/11/16 Python
HTMl5的存储方式sessionStorage和localStorage详解
2014/03/18 HTML / CSS
一篇.NET面试题
2014/09/29 面试题
中间件分为哪几类
2016/09/18 面试题
升职自荐信
2013/11/28 职场文书
社团招新策划书
2014/02/04 职场文书
小学记事作文之200字
2019/08/06 职场文书
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python