来源:www.wcxywh.com │ 网站编辑:网站建设 │ 发表时间:2025-06-27 09:09
据统计,现在全世界57.3%的网站用它。也就是说,10个网站里面,有6个用jQuery。假如只考察用工具库的网站建设,这个比率就会上升到惊人的91.7%。
虽然jQuery这样受青睐,但它臃肿的体积也叫人头痛不已。jQuery 2.0的原始大小为235KB,优化后为81KB;若是支持IE6、7、8的jQuery 1.8.3,原始大小为261KB,优化后为91KB。
如此的体积,即便是宽带环境,完全加载也需要1秒或更长,更别说手机了。这意味着,假如你用了jQuery,用户至少延迟1秒,才能看到网页成效。考虑到本质上,jQuery只不过一个操作DOM的工具,大家不只要问:假如只不过为了几个网页特效,是不是有必要动用这么大的库?
2006年,jQuery诞生的时候,主要用于消除不同浏览器的差异(主如果IE6),为开发者提供一个简洁的统一接口。相比当时,现在的状况已经发生了非常大的变化。IE的市场份额不断降低,以ECMAScript为基础的JavaScript标准语法,正得到愈加广泛的支持。开发者直接用JavScript标准语法,就能同时在各大浏览器运行,不再需要通过jQuery获得兼容性。
下面就探讨怎么样用JavaScript标准语法,取代jQuery的一些主要功能,做到jQuery-free。
1、选取DOM元素
jQuery的核心是通过各种选择器,选中DOM元素,可以用querySelectorAll办法模拟这个功能。
var$=document.querySelectorAll.bind;这里应该注意的是,querySelectorAll办法返回的是NodeList对象,它非常像数组(有数字索引和length属性),但不是数组,不可以用pop、push等数组特有办法。假如有需要,可以考虑将Nodelist对象转为数组。
myList=Array.prototype.slice.call;2、DOM操作
DOM本身就具备非常丰富的操作办法,可以取代jQuery提供的操作办法。
尾部追加DOM元素。
//jQuery写法$.append); //DOM写法parent.appendChild头部插入DOM元素。
//jQuery写法$.prepend); //DOM写法parent.insertBefore删除DOM元素。
//jQuery写法$.remove //DOM写法child.parentNode.removeChild3、事件的监听
jQuery的on办法,完全可以用addEventListener模拟。
Element.prototype.on=Element.prototype.addEventListener;为了用便捷,可以在NodeList对象上也部署这个办法。
NodeList.prototype.on=function{ []['forEach'].call{ el.on; }); returnthis; };4、事件的触发
jQuery的trigger办法则需要单独部署,相对复杂一些。
Element.prototype.trigger=function{ varevent=document.createEvent; event.initEvent; event.data=data||{}; event.eventName=type; event.target=this; this.dispatchEvent; returnthis; };在NodeList对象上也部署这个办法。
NodeList.prototype.trigger=function{ []['forEach'].call{ el['trigger']; }); returnthis; };5、document.ready
现在的最好实践,是将JavaScript脚本文件都放在页面底部加载。如此的话,其实document.ready办法(jQuery简写为$)已经非必要了,由于等到运行的时候,DOM对象已经生成了。
6、attr办法
jQuery用attr办法,读写网页元素的属性。
$.attr;DOM元素允许直接读取属性值,写法要简洁很多。
$.src="http://url/to/image";应该注意,input元素的this.value返回的是输入框中的值,链接元素的this.href返回的是绝对URL。假如需要用到这两个网页元素的属性准确值,可以用this.getAttribute和this.getAttibute。
7、addClass办法
jQuery的addClass办法,用于为DOM元素添加一个class。
$.addClass;DOM元素本身有一个可读写的className属性,可以用来操作class。
document.body.className='hasJS'; //ordocument.body.className+='hasJS';HTML 5还提供一个classList对象,功能更强大(IE 9不支持)。
document.body.classList.add; document.body.classList.remove; document.body.classList.toggle; document.body.classList.contains;8、CSS
jQuery的css办法,用来设置网页元素的样式。
$.css;DOM元素有一个style属性,可以直接操作。
element.style.color="red";; //orelement.style.cssText+='color:red';9、数据储存
jQuery对象可以储存数据。
$.data;HTML 5有一个dataset对象,也有类似的功能(IE 10不支持),不过只能保存字符串。
element.dataset.user=JSON.stringify; element.dataset.score=score;10、Ajax
jQuery的Ajax办法,用于异步操作。
$.ajax.done{ alert; });大家可以概念一个request函数,模拟Ajax办法。
functionrequest{ varxhr=newXMLHttpRequest; if{ callback=opts; opts=null; } xhr.open; varfd=newFormData; if{ for{ fd.append); } } xhr.onload=function{ callback); }; xhr.send; }然后,基于request函数,模拟jQuery的get和post办法。
varget=request.bind; varpost=request.bind;十1、动画
jQuery的animate办法,用于生成动画成效。
$foo.animate;jQuery的动画成效,非常大多数基于DOM。但现在,CSS 3的动画远比DOM强大,所以可以把动画成效写进CSS,然后通过操作DOM元素的class,来展示动画。
foo.classList.add;假如需要对动画用回调函数,CSS 3也概念了相应的事件。
el.addEventListener; el.addEventListener;十2、替代策略
因为jQuery体积过大,替代策略层出不穷。
其中,最有名的是zepto.js。它的设计目的是以最小的体积,做到最大兼容jQuery的API。zepto.js 1.0版的原始大小是55KB,优化后是29KB,gzip压缩后为10KB。
假如不求最大兼容,只期望模拟jQuery的基本功能,那样,min.js优化后只有200字节,而dolla优化后是1.7KB。
除此之外,jQuery本身使用模块设计,可以只选择用自己需要的模块。具体做法参见它的github网站,或者用专用的Web界面。
下一篇:没有了
厦门网站建设知名品牌
互联网品牌推广专家
北京上海天津重庆河北山西内蒙古辽宁吉林黑龙江江苏浙江安徽福建江西山东河南湖北湖南广东广西海南四川贵州云南西藏陕西甘肃青海宁夏新疆台湾香港澳门石家庄唐山秦皇岛邯郸邢台保定张家口承德沧州廊坊衡水太原大同阳泉长治晋城朔州晋中运城忻州临汾吕梁呼和浩特包头乌海赤峰
建站宝盒是一家以提供浙江网站建设、浙江网络优化、浙江网站推广、浙江网络营销一站式服务性网站。公司凝聚了一批专业的设计团队、千余网站建设案例,公司拥有国内一流的网站建设、网站制作、网页设计团队,如果您已经有网站的,看看我们精美的网站建设案例也无妨.一流的服务态度和先进的网络技术让我们在竞争激烈的网站设计这行业中蓬勃发展。