这篇文章主要介绍了 tuzhu_req.js 实现仿百度图片首页效果的相关资料, 需要的朋友可以参考下
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
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 处理文件请求加载异步同步功能有所帮助。
来源: