- 浏览: 108051 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
墨子宇:
so,为了使用JSLint我还得装一个aptana?
eclipse 添加 JSLint 插件 -
lvjun106:
楼主可以看下这篇文章,介绍的很详细。http://www.os ...
eclipse 添加 JSLint 插件 -
newsletterBroker:
呵呵,感觉不错!
Jquery 源码中的 正则表达式 分析 -
jayliud:
String.prototype.count = funct ...
百度web前端笔试
昨天在github找东西的时候,发现上了克军的DO框架,感觉不错,今天看了一上午,作者的思路很清晰,学了不少到东西。
同时发现DO的还有一个分支,应该算是DO的第二个版本吧,不过是压缩过后的,没有压缩的暂时没有找到,等找到了在学习
地址:https://github.com/kejun/Do
以下算是把源码给汉化。版权归作者克军,呵呵呵。
不废话没直接上代码:
/** * Do 是一个轻量级javascript开发框架。它的核心库可以自由更换。 * 设计原则: * 1. 不提供任何业务相关功能 * 2. 公共功能功能都出自核心库,核心库可灵活添加或更换。 * 3. 内置依赖关系管理系统 * @author Kejun (listenpro@gmail.com) * @version 0.1(draft) */ (function(){ var _Doc = document, _loaded = {}, _isArray = function (e) { return e.constructor === Array; }, _log = function (e) { if (window.console && window.console.log){ window.console.log(e); } }, //内部配置文件 _config = { //核心库,可以任意换 core_lib: ['http://code.jquery.com/jquery-1.4.2.js'], //模块依赖 mods: {} }, //加载队列 _loading_queue = {}, // load external js or css. // 加载外部的js css , cb = callback _load = function (url, type, charset, cb) { // url为空 返回 if (!url) { return; } // 加载 url if (_loaded[url]) { _loading_queue[url] = false;//已加载 if (cb) { cb(url);//加载 url } return; } if (_loading_queue[url]) { setTimeout(function(){ _load(url, type, charset, cb); }, 10); return; } _loading_queue[url] = true; // n = node var n, t = type || url.toLowerCase().substring(url.lastIndexOf('.') + 1); if (t === 'js') { n = _Doc.createElement('script'); n.setAttribute('type', 'text/javascript'); n.setAttribute('src', url); } else if (t === 'css') { n = _Doc.createElement('link'); n.setAttribute('type', 'text/css'); n.setAttribute('rel', 'stylesheet'); n.setAttribute('href', url); _loaded[url] = true; } if (charset) { n.charset = charset; } if (t === 'css') { _Doc.getElementsByTagName('head')[0].appendChild(n); if (cb) { cb(url); } return; } n.onload = n.onreadystatechange = function () { if (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete') { //loaded success. _loaded[this.getAttribute('src')] = true; if (cb) { cb(this.getAttribute('src')); } n.onload = n.onreadystatechange = null; } }; _Doc.getElementsByTagName('head')[0].appendChild(n); }, //计算 参数e是个队列 _calculate = function(e) { if (!e || !_isArray(e) ) { return; } var i = 0, item, result = [], mods = _config.mods, _depeList = [],//需要加载的List _hasAdded = {},//已经加载的List getDepeList = function (e) { var i = 0, m, reqs; // break loop require.如果已经加载 if (_hasAdded[e]) { return _depeList; } _hasAdded[e] = true; if (mods[e].requires) { reqs = mods[e].requires; for (; m = reqs[i++];) { // is a module. if (mods[m]) { getDepeList(m); _depeList.push(m); } else { // is a file. _depeList.push(m); } } return _depeList; } return _depeList; }; for (; item = e[i++]; ) { if (mods[item] && mods[item].requires && mods[item].requires[0]) { _depeList = []; _hasAdded = {}; result = result.concat(getDepeList(item)); } result.push(item); } return result; }, // a asynchronous queue _queue = function (e) { if (!e || !_isArray(e) ) { return; } this.queue = e; //timeout file collection. this._skip = {}; }; _queue.prototype = { // 超时 _Timeout: 6000, // 间隔 _interval: 10, start: function () { var o = this; this.current = this.next(); if (!this.current) { this.end = true; return; } // 延迟 _Timeout后执行 ,打印 o.current 加载超时 this._outTimer = setTimeout(function () { _log('[DoubanJS] "' + o.current + '" timeout.'); o._skip[o.current] = true; o.start(); }, this._Timeout); this.run(); }, run: function () { var o = this, mod; if (typeof this.current === 'function') { this.clearTimer(); this.current();//? this.start();//加载下一个 } else if (typeof this.current === 'string') { if (_config.mods[this.current]) { // todo:load a module. mod = _config.mods[this.current]; _load(mod.path, mod.type, mod.charset, function (e) { // if timeout file fire callback don't disturb queue. // 如果还没有超时,继续 if (!o._skip[e]) { o.clearTimer(); o.start(); } }); } else if (/\.js|\.css/i.test(this.current)) { // load a file. _load(this.current, '', '', function (e) { // if timeout file fire callback don't disturb queue. if (!o._skip[e]) { o.clearTimer(); o.start(); } }); } else { // no found module. skip to next this.clearTimer(); this.start(); } } }, clearTimer: function () { //取消指定的setTimeout函数将要执行的代码 clearTimeout(this._outTimer); }, next: function () { return this.queue.shift(); } // 删除 queue 的第一个元素 ,并返回第一个元素 }; // preload core lib. _load(_config.core_lib[0], 'js'); this.Do = function(){ var args = Array.prototype.slice.call(arguments, 0), thread = new _queue(_calculate(_config.core_lib.concat(args))); thread.start(); }; this.Do.add = function(sName, oConfig) { if (!sName || !oConfig || !oConfig.path) { return; } _config.mods[sName] = oConfig; }; })();
发表评论
-
execCommand
2011-11-25 16:12 1068mozilla 文档地址:https://develop ... -
javascript DOM
2011-11-21 10:50 985原文地址: http://blog.mo ... -
支持ctrl,shift键的拖拽排序
2011-08-26 11:23 1127终于搞定了,太不容易了。最近公司要弄一个拖拽排序的 ... -
javascript 封装 继承
2011-08-16 17:37 1048原文地址:http://www.ruanyifeng.com/ ... -
javascript 中的闭包
2011-08-16 16:37 876文章地址:http://www.ruanyifeng.com/ ... -
javascript 排序
2011-08-31 19:41 873//生成20-100之间的20个随 ... -
seajs 源码 学习 1
2011-08-10 17:32 0global.seajs = { _seajs: this ... -
seajs 源代码 学习
2011-08-11 14:08 3160这段时间学习了一下seajs,也用了seajs写了不少的d ... -
null 和 undefined
2011-07-31 15:05 837原文地址:http://blog.csdn.net/aimin ... -
辩:javascript 的数据类型
2011-07-29 11:18 1142关于“javascript 的数据 ... -
跨域请求
2011-07-12 11:34 0原文地址:http://itgeeker. ... -
uglifyJS
2011-04-26 12:21 0-b or --beautify — o ... -
prettfy demo
2011-02-23 08:29 1160<!DOCTYPE html PUBLIC " ... -
JavaScript 测试题
2011-02-16 12:07 1031console.log(" ... -
javascript 中的apply和call方法
2010-12-31 15:11 733一直以来不明白,今天算是搞明白了apply和call方法了。记 ... -
jquery 插件 开发 模板
2010-12-10 13:09 920原文来自网上。 (function($) { ... -
31个最实用的Javascript工具
2010-12-08 14:56 1031原文地址:http://developer.51cto.com ... -
27个必备的Javascript开发工具
2010-12-01 14:59 978原文地址:http://blog.mcncc.com/4275 ... -
选择器 效率 图
2010-11-22 11:27 680以后用jquery的选择器这回有依据了 -
YQL介绍---很强大啊
2010-11-22 10:52 1471原文地址:http://www.aliue ...
相关推荐
jQuery课件,jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”。
jquery文件,属于JavaScript的一种框架。jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框架)于2006年1月由John Resig发布。jQuery设计的宗旨是“write Less,Do More...
Do是豆瓣网kejun开发的一个很轻量的Javascript开发框架。目前do.min.js。它的核心功能是对模块进行组织和加载。加载采取并行异步队列的策略,并且可以控制执行时机。Do可以任意置换核心类库,默认是jQuery。 项目...
jQuery是一个兼容多浏览器的javascript框架,核心理念是write less,do more(写得更少,做得更多)。jQuery在2006年1月由美国人John Resig在纽约的barcamp发布,吸引了来自世界各地的众多JavaScript高手加入,由Dave ...
jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框架)于2006年1月由John Resig发布。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。...
jQuery是一个兼容多浏览器的javascript框架,核心理念是write less,do more(写得更少,做得更多)。jQuery在2006年1月由美国人John Resig在纽约的barcamp发布,吸引了来自世界各地的众多JavaScript高手加入,由Dave ...
Stomple 是一个基于 WebSocket 实现了 Stomp 消息传输框架协议的 JavaScript 包。 示例代码: var client = Stomple.create_client({ url : "ws://localhost:61614/stomp", destination : "jms.topic.chat", login :...
书中从JavaScript语言基础开始,分别讨论了图像、框架、浏览器窗口、表单、正则表达式、用户事件和cookie,并在上一版的基础上新增了两章,讲述jQuery框架的基础知识。本书不仅介绍了基础知识和使用方法,也深入探讨...
13.3 处理窗口事件或框架事件 13.3.1 onLoad和onUnLoad事件 13.3.2 onFocus和onBlur事件函数 13.3.3 onResize事件处理函数 13.4 鼠标事件处理 13.4.1 怎样使用鼠标事件 13.4.2 ...
2.8.5 while和do-while循环语句 2.8.6 使用break和continue进行循坏控制 2.8.7 with对象操作语句 2.8.8 使用for…in进行对象循坏 2.8.9 含标签的语句 2.9 函数 2.9.1 函数的基本组成 2.9.2 全局函数与局部函数 2.9.3...
2.7.2 do…while语句 2.7.3 for语句 2.7.4 break和continue语句 2.7.5 for…in语句 2.7.6 实例:九九乘法表 2.8 函数 2.8.1 定义和调用函数 2.8.2 用arguments对象访问函数的参数 2.8.3 ...
2.3.4 do…while循环控制结构 9 2.3.5 for循环控制结构 10 2.3.6 switch控制结构 10 2.3.7 with语句 10 2.3.8 comment语句 11 3 事件 12 4 函数 14 4.1 函数的构成 14 4.2 函数的调用 14 4.3 构造函数 14 4.4 默认...
长生不老药休息用于 EmberJS(以及其他前端 Javascript 框架)的 REST 服务器确保你有和创建一个新项目在终端 elixir new my_app将以下内容放入mix.exs文件: defmodule MyApp do use Mix.Project alias ...
jQuery是继prototype之后又一个优秀的Javascrīpt框架。其宗旨是——WRITE LESS,DO MORE,写更少的代码,做更多的事情。 它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器 ...
A simpler, extendable bidirectional communication Frame between Android WebView and Javascript Features supports parsing and callback for JS primitive types Modular management support System WebView ...
71.JS中遇到脚本错误时不做任何操作:window.onerror = doNothing; 指定错误句柄的语法为:window.onerror = handleError; 72.JS中指定当前打开窗口的父窗口:window.opener,支持opener.opener...的多重继续. 73.JS中的...
jQuery是一个兼容多浏览器的javascript框架 核心理念是write less do more 写得更少 做得更多 jQuery在2006年1月由美国人John Resig在纽约的barcamp发布 吸引了来自世界各地的众多JavaScript高手加入 由Dave Methvin...
一个超级棒的 JavaScript 事件处理程序库 作者:詹姆斯·布鲁蒙德版本:0.2.3-beta 版权所有 2011 詹姆斯·布鲁蒙德在MIT和GPL下获得双重许可 特征 简单易用的API 事件命名空间 对一些通常不受支持的事件...
2.8.5 while和do-while循环语句 2.8.6 使用break和continue进行循坏控制 2.8.7 with对象操作语句 2.8.8 使用for…in进行对象循坏 2.8.9 含标签的语句 2.9 函数 2.9.1 函数的基本组成 2.9.2 全局函数与局部函数 2.9.3...
框架之前JavaScript 在这10个系列的视频中,我将在开始学习诸如React或Vue.js之类的框架之前,回顾我认为应该清楚的主要JavaScript概念。 :clapper_board: :books: