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 相关文章推荐
用JS写的一个TableView控件代码
Jan 23 Javascript
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
Mar 08 Javascript
判断客户端浏览器是否安装了Flash插件的多种方法
Aug 11 Javascript
分享Javascript中最常用的55个经典小技巧
Nov 29 Javascript
js购物车实现思路及代码(个人感觉不错)
Dec 23 Javascript
原生js实现水平方向无缝滚动
Jan 10 Javascript
JS百度地图搜索悬浮窗功能
Jan 12 Javascript
原生js仿淘宝网商品放大镜效果
Feb 28 Javascript
jQuery中each循环的跳出和结束实例
Aug 16 jQuery
vue.js 获取select中的value实例
Mar 01 Javascript
js对象数组和对象的使用实例详解
Aug 27 Javascript
js实现百度登录窗口拖拽效果
Mar 19 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
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
php一维二维数组键排序方法实例总结
2014/11/13 PHP
提交表单后 PHP获取提交内容的实现方法
2016/05/25 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
2019/12/13 PHP
js电信网通双线自动选择技巧
2008/11/18 Javascript
Javascript事件热键兼容ie|firefox
2010/12/30 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
js创建对象的方式总结
2015/01/10 Javascript
jQuery中offsetParent()方法用法实例
2015/01/19 Javascript
javascript求日期差的方法
2016/03/02 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
js实现二级导航功能
2017/03/03 Javascript
javascript实现二叉树遍历的代码
2017/06/08 Javascript
Vuex中mutations与actions的区别详解
2018/03/01 Javascript
node.js调用C++函数的方法示例
2018/09/21 Javascript
jQuery.validate.js表单验证插件的使用代码详解
2018/10/22 jQuery
Vue关于组件化开发知识点详解
2020/05/13 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
JavaScript实现鼠标经过表格某行时此行变色
2020/11/20 Javascript
利用aardio给python编写图形界面
2017/08/21 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
解决django同步数据库的时候app models表没有成功创建的问题
2019/08/09 Python
python通用读取vcf文件的类(复制粘贴即可用)
2020/02/29 Python
纯CSS3制作的鼠标悬停时边框旋转
2017/01/03 HTML / CSS
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
用HTML5制作烟火效果的教程
2015/05/12 HTML / CSS
HTML5中图片之间的缝隙完美解决方法
2017/07/07 HTML / CSS
Solid & Striped官网:美国泳装品牌
2019/06/19 全球购物
英国户外服装、鞋类和设备的领先零售商:Millets
2020/10/12 全球购物
垃圾回收的优点和原理。并考虑2种回收机制
2016/10/16 面试题
质检的岗位职责
2013/11/17 职场文书
做人民满意的公务员活动方案
2014/08/25 职场文书
党性分析自查总结
2014/10/14 职场文书
Python爬取某拍短视频
2021/06/11 Python