摘要:
刚买了司徒大大的《Javascript框架设计》,准备开始研读。打算在读之前先随便写个图片轮播插件,到读完这本书再来看看现在的自己有多菜。。。。。。。顺便做图片轮播的时候用美女照片真影响效率。。。。。两三个小时写出来的。。代码略粗糙。。见谅。。上代码!先是如何使用:html: ... 阅读全文
摘要:
模块化 首先要理解的是什么是模块化,模块化这个词来源于研究工程设计中的《Design Rules》,是指可组成系统的、具有某种确定独立功能的半自律性的子系统。 模块化在编程中的意义是为了减少软件的复杂度,使软件不会因为不断的扩大而导致功能维护、添加变得十分困难。而通过模块的拼接,就可以组成一... 阅读全文
摘要:
关于垂直居中:首先是用的比较频繁的line-height的设置,通过调整line-height值大小,对于行内非替换元素的垂直居中设置有奇效 hello World!然后是通过将display修改为table-cell来设置垂直居中对齐,这个对于块级元素也有很好的效果,当然不能忘了设置vert... 阅读全文
摘要:
在Sizzle中只剩下最后一段大的函数了,就是select,也就是在sizzle中联系compile和Sizzle函数的关键。它在Sizzle中主要处理那些并非是简单的选择器,如包含有:eq(1)的。直接看源码:function select( selector, context, results,... 阅读全文
摘要:
这篇开始分析Sizzle中的终极匹配器。首先讲一下普通情况下,如:div a的匹配。在matcherFromToken函数中,可以看出匹配函数的组装方式,见源码:if ( (matcher = Expr.relative[ tokens[i].type ]) ) { matchers = [ ... 阅读全文
摘要:
考虑到Sizzle里面函数互相调用的关系,接下来的函数就不会按从上到下的顺序分析,而是采用调用的顺序进行分析。这篇博客参考了这篇文章里的说明(靠这篇文章才理解的。。。。) 首先就是要讲到编译函数,JS是单线程语言,但是在执行程序时,一段函数的运行,会导致线程的阻塞,导致整个程序停顿。这时候异步就出现了,异步的原理不多说了。异步使得JS能够更加灵活的运行,克服了其单线程的限制,但是,大量采用异步会导致整个程序看起来乱糟糟的。所以异步,同步编程的安排还是需要根据实际来控制的。 好像说偏了。。按照上面参考文章的说法,'JavaScript是单线程的,代码也是同步从上向下执行的,执行流程不会随 阅读全文
摘要:
最近一直在搞毕设,实在是没时间写博客了,零碎的时间看代码进度也不快,所以写博客一拖再拖了,今天先补一篇上来。。。在上次写得setDocument以后,紧接着的是一些零碎的功能函数 1 Sizzle.matches = function( expr, elements ) { 2 return Sizzle( expr, null, null, elements ); 3 }; 4 5 Sizzle.matchesSelector = function( elem, expr ) { 6 // 设置document以防万一 7 if ( ( elem.ownerDocu... 阅读全文
摘要:
在各种聚会,毕设任务后。。。我又回来了!!!继续分析jquery中的sizzle源码在Sizzle主函数以后,先是一些列的零散函数,为后面support检测,事件代理提供先期方法。这些函数内容比较简单,就直接分析掉了:// 为function作标记function markFunction( fn ) { fn[ expando ] = true; return fn;}/** * 用一个div元素来做一些检测 */function assert( fn ) { var div = document.createElement("div"); try { ... 阅读全文
摘要:
这篇主要讲最后的seajs源码运行顺序。当然,前面那些零零碎碎的就直接忽略了,就从module那块开始seajs总的函数调用顺序图如下:seajs.use调用后会调用Module.preload,如果有预加载模块的话,就需要先调用Module.use(preloadMods,function(){..},...),来完成模块的预加载,在其完成后再正式调用Module.use(ids,...)mod.load中的resolve函数主要是将mod所依赖的一系列文件路径都计算出来,然后形成数组返回。在load通过循环,逐个的用Module.get得到module实例,然后通过fetch,调用seaj 阅读全文
摘要:
这次是seajs源码分析的倒数第二篇,因为涉及到后面的代码运行分析,所以比较长(终于要写一篇超长博客了。。。)首先还是和以前一样,对seajs的源码进行分析先是一系列的变量,这些是在seajs中的全局变量,用于储存一些要加载或加载完的js,css文件的module,还有加载的状态,源码如下: 1 var cachedMods = seajs.cache = {} 2 var anonymousMeta 3 4 var fetchingList = {} 5 var fetchedList = {} 6 var callbackList = {} 7 8 var STATUS = Modul.. 阅读全文