Ruby's Louvre

每天学习一点点算法

导航

2013年10月30日 #

express源码学习

摘要: 终于腾出手来学习express。express在node.js中一株独秀。好像任何一种有主导的托管平台的语言,都出现这现象——马太效应。express是社区的共同孩子,里面聚集上社区最好的常用模块。从源码来看,它分为八大块,application.js, express.js, middleware.js, request.js, response.js, utils.js, view.js与router。express.js相当于过程式语言的main函数,是一个入口,吐出express这个工厂函数。从代码组织来看,我们会发现一个有趣的现象。引入语句总是位于上方,主程序夹在中间,主程序用到.. 阅读全文

posted @ 2013-10-30 19:24 司徒正美 阅读(3429) 评论(0) 推荐(0) 编辑

让IE10等支持classList2.0

摘要: chrome24+, firesfox26+起支持classList2.0,即让它同时添加或删除多个类名, toggle方法支持第2个参数,用于强制添加或删除 var div = document.createElement("div") div.classList.add("a", "b") if (div.className !== "a b" && window.DOMTokenList) { var _add = DOMTokenList.prototype.add ... 阅读全文

posted @ 2013-10-30 16:36 司徒正美 阅读(1443) 评论(1) 推荐(0) 编辑

判定元素是否刚插入到DOM树

摘要: 上接《这篇博文》,其应用于avalon的if绑定。如果一个节点还没有插入DOM树,那么avalon将延时对它进行扫描渲染,直到它再次插入到DOM树为止。由于CSS3 keyframe动画的复杂性,我还是使用很挫的轮询方式来判定一个节点插入到DOM树。https://github.com/RubyLouvre/avalon/blob/master/avalon.js#L1938 avalon(elem).addClass("fixMsIfFlicker") var id = setInterval(function() { ... 阅读全文

posted @ 2013-10-30 11:18 司徒正美 阅读(1925) 评论(1) 推荐(0) 编辑

accept巨坑

摘要: 在做node.js时, 我们要把一个资源发送回前端,需要用到以下一句:res.setHeader('Content-Type', mime );mime,全称即Multipurpose Internet Mail Extensions,如果设置不对或没设置,IE与FF还客气地解释返回文件的类型帮你打圆场,chrome则直接没反应,比如说css文件,就不帮你排版了!因此获取这个mime非常重要,手段有两种,取url中的文件后缀名,或分析req.headers.accept。第一种取后缀名,并不是所有URL都带文件后缀名,而且每个框架每个模板系统都有自己的后缀名,有时有的后缀名并不 阅读全文

posted @ 2013-10-30 10:04 司徒正美 阅读(1047) 评论(0) 推荐(0) 编辑

for in 循环的输出顺序问题

摘要: var data = { '4': 'first', '3': 'second', '2': 'third', '1': 'fourth' }; for (var i in data) { console.log(i + " " + data[i]) }IE11, chrome31, firefox23的打印如下: 1 fourth2 third3 ... 阅读全文

posted @ 2013-10-30 09:52 司徒正美 阅读(9452) 评论(2) 推荐(6) 编辑