重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

jquery的源码,jq源码解析

如何查看网页jquery源代码

右击页面,点击“查看元素”或“查看源码”就可以查案网页的html

创新互联建站专业为企业提供莲湖网站建设、莲湖做网站、莲湖网站设计、莲湖网站制作等企业网站建设、网页设计与制作、莲湖企业网站模板建站服务,十余年莲湖做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

一般scriptjuqery代码/script标签包裹的就是写在页面上的jQuery代码

另外还有写在jQuery文件在页面通过script src="jquery文件地址"/script这里的地址一般是相对地址,找到相应的地址打开文件就可以了

jQuery源码中构造对象的方法有更简单的方法么

jQuery对象是由其prototype的init构造器进行构造实例,与prototype无关,可以抽离出来。

// 最新版本2.1.4

// 73行定义了jQuery构造函数

// Define a local copy of jQuery

jQuery = function( selector, context ) {

// The jQuery object is actually just the init constructor 'enhanced'

// Need init if jQuery is called (just allow error to be thrown if not included)

// 76行 jQuery对象通过prototype下的init方法进行构造并返回实例

return new jQuery.fn.init( selector, context );

},

// 92行 代码告诉我们 jQuery.fn 和 jQuery.prototype 是指向同一对象,也就是说fn是prototype的简写

jQuery.fn = jQuery.prototype = {

// The current version of jQuery being used

jquery: version,

// 96行修正constructor属性指回jQuery。同时jQuery对象虽然是用jQuery.fn.init方法构造,但constructor依然修正指向了jQuery,非为jQuery.fn.init,看下方代码

constructor: jQuery,

// 2735行 定义了jQuery.fn.init构造函数

init = jQuery.fn.init = function( selector, context ) {

// 2835行 使得jQuery.fn.init构造函数的原型和jQuery原型同时指向了同一个对象

// Give the init function the jQuery prototype for later instantiation

init.prototype = jQuery.fn;

// 9202行 而$仅仅只是jQuery对象的一个别名,跟无new构造无关

window.jQuery = window.$ = jQuery;

大概的代码结构就是这样子。

jQuery仅仅为了实现无new构造,在其原型下创建了init方法(仅充当构造器)为其构造实例对象,init方法的原型和jQuery原型指向了同一个对象(当然就成了循环引用),为后续的实例方法和实例插件机制打下基础(如果不指向同一对象写实例插件将会出现$.fn.init.fn.xxxxx这一幕),并修正constructor的指向,使得看起来像是由jQuery构造器构造。

$只是jQuery对象的别名, $ === jQuery 是成立的,并且因为使用new操作符的时候 ( new jQuery() ) 和 jQuery() 的 reutrn 值会覆盖new操作符生成的实例,所以 jQuery() 和 new jQuery () 的结果也是一样的。

而题主示例是

1、 $是实现jQuery无new构造的方法

2、 $ !== jQuery

3、 jQuery() 和 new jQuery的结果是不同的

[img]

完全理解jQuery源代码,在前端行业算什么水平

依读了2周jQuery源码的人感觉来说,完全理解jQuery,就拿jQuery 1.11这个版本10337行代码来说,水平已经很不错了。谦虚点说,已经入门。骄傲点,国内领先水平。但其码我感觉是js架构之路起行的第一步,完全理解源码,说明有独立构建或组织大型web前端框架的能力和基础。然后看看完全理解jQuery是一个怎么样的状态。

看下面几个链接就明白了:

RubyLouvre/avalon · GitHub

artDialog

aui/artDialog · GitHub(后来的新版代码有所改变)

没错,这两个里边,就是在继承jquery的基础上做了自己的创新尝试。

然后在看下面这位:

[原创] jQuery1.6.1源码分析系列(停止更新)

是唯一出过jquery源码分析书的一位:

《jQuery技术内幕:深入解析jQuery架构设计与实现原理》(高云)【摘要 书评 试读】

然后在看这位:

jQuery 2.0.3 源码分析系列

是目前一直在更新的一位,通俗有深度且版本比较新。

在说一下我2周阅读jquery源码的心得,初看源码写的恶心,再看写的不错,细看写的真是精妙。然后今天在看ext 4.2的源码,真是流畅易读。基本来说,看懂jQuery源码,以后的源码学习之路可以说,平坦。

然后说是不是高手,高手只是一个自我定位的心理暗示,是一种人格魅力的体现,是业务与技术的完美结合。个人感觉只能无限的接近,不能在有限的生命里边到达。我们在通往目的地过程中享受一路的风景,这才是生命的意义。

然后在说前端,前端的核心是js,外围打酱油的技术太多,不一一列举。

css就像一瓶酒,得品。

html,css总共就那些标签跟选择器属性什么的,但是要写一个有扩展性,健壮性或维护性的页面不容易。现在写页面基本条件反射,不是如何快速的完成,而是思考如果有前端界面需求修改,怎么在修改代码最少的情况下完成整体需求任务。

js就像一把剑,得磨。

js刚开始只是为了较验,随便技术社会的发展,承担的角色越来越重,刚开始玩玩jQuery感觉已经会js了,其实只是冰山一角。随着对js的了解越来越多,他即变态又可爱,即好玩又难控,即有很多兼容问题,但解决兼容是我们基本生存之道。

人生就是一场梦,得作。

技术只是生活的一部分,曾经雄心斗志,如今低头写码。改变能改变的,接受不能改变的。人生有限,兄争朝夕啊。

最后说,什么时候能阅读jQuery源码,我感觉其码是纯js编码一年以上,js基础知识没有盲点。阅读源码,确实能学到很多东西。不只是技术,而是一种生活的态度。一种把一件事情做到极致的态度

jquery源码 ,jquery选择器,javascript,正则表达式

quickExpr应该是个二义正则。前半段是:

^[^]*([\w\W]+)[^]*$:我猜测意思是一个简单的标签。如$('divnew Div/div')匹配的用法。

后半段是:

^#([\w-]+)$:这个显然就是id选择器。-getElementById

注意两个正则用了|来分隔二义,所以你这里的匹配不成功是正常的。

jquery应该是根据这个quickExpr来判断

if(match[1]) createNewfragment();....

else if(match[2]) getElementById();

当然这只是个人猜测,没有细读jquery源码。仅做参考

简单易懂的jQuery导航(三级菜单)源码

!-- 三级操蛋导航 --

div class="nav_left"

div class="nav_leftlist"

h2b/b用户系统/h2

dl

dtb/b用户管理/dt

dd

a class="cur" href=""商户信息b/b/a

a href=""用户信息b/b/a

/dd

/dl

/div

div class="nav_leftlist"

h2b/b财务系统/h2

dl

dtb/b系统账务/dt

dd

a href=""平台账单b/b/a

a href=""账单明细b/b/a

/dd

/dl

dl

dtb/b商户账务/dt

dd

a href=""商户账单b/b/a

a href=""提现管理b/b/a

/dd

/dl

dl

dtb/b用户账务/dt

dd

a href=""用户账单b/b/a

a href=""提现管理b/b/a

/dd

/dl

/div

/div

style

.nav_left{background: #232b35;height: 100%;width: 220px;min-height: 600px;position: fixed;top: 100px;left: 0;}

.nav_leftlist{}

.nav_leftlist h2{height: 50px;line-height: 50px;padding-left: 40px;font-size: 16px;background: #3b444f;color: #999999;position: relative;cursor: pointer;}

.nav_leftlist h2 b{position: absolute;top: 20px;left: 13px;width: 16px;height: 9px;background: url(../images/icon04.png) no-repeat;background-position: 0 0;cursor: pointer;}

.nav_leftlist h2 b.cur{background-position: -16px 0;}

.nav_leftlist dl{}

.nav_leftlist dl dt{height: 50px;line-height: 50px;background: #2c3643;font-size: 16px;color: #ffffff;padding-left: 60px;position: relative;cursor: pointer;}

.nav_leftlist dl dt b{position: absolute;top: 20px;left: 34px;width: 16px;height: 9px;background: url(../images/icon04.png) no-repeat;background-position: 0 -10px;}

.nav_leftlist dl dt b.cur{background-position: -16px -10px;}

.nav_leftlist dl dd{}

.nav_leftlist dl dd a{display: block;height: 50px;line-height: 50px;color: #fff;padding-left: 80px;font-size: 16px;position: relative;}

.nav_leftlist dl dd a.cur{color: #ee581c;}

.nav_leftlist dl dd a.cur b{display: block;position: absolute;top: 16px;right: -1px;width: 11px;height: 18px;background: url(../images/icon04.png) no-repeat;background-position: 0 -20px;}

/style

/body

script type="text/javascript" src="../js/jquery.js" /script

script type="text/javascript" 

$(function(){

$('.nav_leftlist').on('click', 'h2', function(event) {

$(this).siblings('dl').toggle();

if($(this).siblings('dl').css('display')=='none'){

$(this).find('b').addClass('cur');

}else{

$(this).find('b').removeClass('cur');

}

});

$('.nav_leftlist').on('click', 'dl dt', function(event) {

$(this).siblings('dd').toggle();

if($(this).siblings('dd').css('display')=='none'){

$(this).find('b').addClass('cur');

}else{

$(this).find('b').removeClass('cur');

}

});

})

/script

效果图:

如何正确阅读jquery源码和jquery插件源码

1. jQuery 里面有很多东西是出于兼容性,历史遗留。

比如 .ready() 之类的函数,为什么会很scroll 有关,那是为了兼容某些ie。这种代码对于编程思想来说不仅没用,而且是杂音,你要筛选出来就得了解这段代码的变动,费心费力得不偿失。

2. jQuery 里面的代码不一定是最优的,例如事件委托,每一次事件触发都要调用选择器,实际上是效率很低的。但是我又比较懒,没有提交patch。

3. jQuery 实际上很容易写出来一个 barebone alternative,在使用的过程中多想,多思考多总结就可以了。

4. jQuery 这类框架里真正有思维挑战性的东西不多,一半以上是堆代码而已,剩下的一点价值在于架构、抽象、扩展能力。

5. 我有一句话与所有的同行分享:工程师让需求成为现实,优秀工程师化复杂为简单,顶尖工程师变不可能为可能;架构师掌握现在,优秀架构师展望未来,顶尖架构师创造时代。

jQuery 的设计目的是,让前端工程师的工作更简单更轻松,但它并不适合所有的前端工程师,假如你的目标是成为优秀架构师、顶尖架构师的话,你在jQuery里也看不清未来。


当前标题:jquery的源码,jq源码解析
路径分享:http://cqcxhl.cn/article/dsopigh.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP