摘要: 本文基于node 0.10.22版本关于EventLoop是什么,请看阮老师写的什么是EventLoop本文讲述的是EventLoop中的执行顺序(着重讲setImmediate, setTimeout/setInterval, I/O的顺序)首先看看github上看到的nodejs eventloop 的图解, 来源于https://github.com/joyent/node/issues/6034#issuecomment-30017889(注意图中timers处process.nextTick仍可以优先于timers处执行,可能是图中有遗漏, 任何回调中设置的nextTick都会在回调 阅读全文
posted @ 2013-12-05 18:27 will_kan 阅读(2519) 评论(0) 推荐(0) 编辑
摘要: id在model.attributes中,需要用户自行定义,可不定义,获取方法:model.get('id')cidcollection中每个model都有的属性,由backbone自动生成,获取方法:model.cididAttribute在model中,用于指定使用model.attributes中哪个键作为id,默认情况下是model.attributes.id,需要用户自行定义,可不定义,获取方法:model.idAttribute当使用set进行智能判断操作时,只有idAttribute指定的键相同的情况会把该操作视为changeDEMO 1 ... 阅读全文
posted @ 2013-10-24 23:56 will_kan 阅读(624) 评论(0) 推荐(0) 编辑
摘要: modelmodel的get和set是对model.attributes进行操作,并不是直接对model进行操作collectioncollection.set()会触发相应的add,remove,change事件collection.reset()只会触发reset事件view其他model.toJSON() 或 collection.toJSON() 返回的是该对象的深复制对象通过直接赋值的方式修改model或collection的值并不会触发事件通过 _.extend(a, Backbone.Events) 可以让a继承Backbone.Events以对对象a进行事件监听默认的Backb 阅读全文
posted @ 2013-10-18 16:20 will_kan 阅读(302) 评论(0) 推荐(0) 编辑
摘要: RESTFUL API从服务器获取模型:collection.fetch();//发送GET请求地址为collection.url;存取模型至服务器: model.save();//发送PUT请求,地址为collection.url + '/' + model.get(id) 新建模型: collection.create();//发送POST请求地址为collection.url删除模型: model.destroy(); //发送DELETE请求,地址为collection.url + '/' + model.get(id) 以上函数都可以带上第二个参数op 阅读全文
posted @ 2013-10-18 16:16 will_kan 阅读(609) 评论(0) 推荐(0) 编辑
摘要: 使用情景区别listenTo用于监听自身意外的对象on用于监听自身listenTo和on中的回调函数里的this的区别listener.listenTo(object, 'eventName', function(){ //此处的this指向listener})object.on('eventName', function(){ //此处的this指向object})object.on('eventName', function(){ //此处的this指向context}, context)触发顺序当存在同名事件时,会按定义顺序执行,on和li 阅读全文
posted @ 2013-10-17 23:05 will_kan 阅读(1569) 评论(0) 推荐(0) 编辑
摘要: 若要获得更好的阅读体验请移驾http://willkan.github.io/blog/html/Workflow/概述为什么写这篇文章接触前端一年了,瞎摸过来这么久一直很希望看到一个完整的前端构建流程,遗憾没找到相关文章,所以自己在做这个网页的时候顺便纪录下来自己从架构到部署的整个过程。我一直希望有个网站可以让我用markdown写文章,并且可以在markdown中插入自己的demo(不是源码),于是就做了这么个项目让我可以轻松发布自己的文章。(文中并不会提到如何解析markdown,解析markdown可以了解下grunt-markdown)使用资源分析网上前端资源非常丰富,做一个网页完全 阅读全文
posted @ 2013-09-07 19:21 will_kan 阅读(1656) 评论(1) 推荐(0) 编辑
摘要: ps:本文中"组装成成数组"指的是若元素个数大于1则返回数组,若元素只有1个则返回元素本身以下函数是$.fn该对象的方法ready(callback)通过readyRE正则表达式检测document.readyState是否符合,若符合则调用回调函数;否则添加DOMContentLoaded事件处理函数以调用回调函数each(callback)因为Z元素集合本身就是类数组,不需要像$.each(elements,callback)一样先判断elements是否类数组,所以使用原生的Array.every来遍历更好filter(selector)若selector是函数,则返 阅读全文
posted @ 2013-08-01 15:56 will_kan 阅读(328) 评论(0) 推荐(0) 编辑
摘要: uniq(array)返回不存在重复值的数组function classRE(name)判断classCache中是否已存在name,若存在则取出classCache[name];否则存入该类名的正则表达式至classCache[name]中function maybeAddPx(name,value)若name在cssNumber中则返回value;否则返回value+"px"function defaultDisplay(nodeName)从elementDisplay中获取该nodeName(即标签类名:a,div,p……)的默认display值;若elementDi 阅读全文
posted @ 2013-08-01 11:05 will_kan 阅读(364) 评论(0) 推荐(0) 编辑
摘要: 最近在研究Zepto的源码,这是第一篇分析,欢迎大家继续关注,第一次写源码笔记,希望大家多指点指点,第一篇文章由于首次分析原因不会有太多干货,希望后面的文章能成为各位大大心目中的干货。Zepto是一个匿名函数的运行结果,而zepto是该匿名函数中定义的一个对象,注意区分zepto.matchesmatch = ~zepto.qsa(parent, selector).indexOf(element)zepto.qsa:zepto优化过的选择器zepto.qsa(parent, selector).indexOf(element):若选择器返回值中无法找到element则该语句运行值为-1~ze 阅读全文
posted @ 2013-08-01 10:58 will_kan 阅读(573) 评论(0) 推荐(0) 编辑