27
4006-5666-83
当前位置:首页 > 资讯 > 建站知识

网站制作如何用javascript代替Jquery

2015-04-29 酷站科技
 jQuery是如今最时兴的JavaScript专用工具库。

据调查,现阶段全球57.3%的网址应用它。换句话说,10个网址里边,有6个应用jQuery。假如只调查应用专用工具库的网站制作,这一占比便会升高到令人震惊的91.7%。

 jQuery是现在最流行的JavaScript工具库

尽管jQuery这般火爆,可是它松垮的容积也令人头疼不己。jQuery 2.0的初始尺寸为235KB,优化后为81KB;如果是适用IE6、7、8的jQuery 1.8.3,初始尺寸为261KB,优化后为91KB。

那样的容积,即便是光纤宽带自然环境,彻底载入也必须一秒或更长,更不要说移动终端了。这代表着,假如你应用了jQuery,客户最少延迟时间一秒,才可以见到网页页面实际效果。充分考虑实质上,jQuery仅仅一个实际操作DOM的专用工具,大家不但要问:假如仅仅为了更好地好多个网页特效,是不是必须使用这么大的库?

二零零六年,jQuery问世的情况下,关键用以清除不一样电脑浏览器的差别(主要是IE6),为开发人员出示一个简约的统一插口。对比那时候,现如今的状况早已发生了非常大的转变。IE的市场占有率持续降低,以ECMAScript为基本的JavaScript规范英语的语法,正获得愈来愈普遍的适用。开发人员立即应用JavScript规范英语的语法,就能另外在各种电脑浏览器运作,已不必须根据jQuery获得兼容模式。

下边就讨论怎样用JavaScript规范英语的语法,替代jQuery的一些关键作用,保证jQuery-free。

jQuery-free

一、选择DOM原素

jQuery的关键是根据各种各样选择符,选定DOM原素,可以用querySelectorAll方式 仿真模拟这一作用。

  1. var $ = document.querySelectorAll.bind(document); 

这儿必须留意的是,querySelectorAll方式 回到的是NodeList目标,它很像数字能量数组(有数据数据库索引和length特性),但并不是数字能量数组,不可以应用pop、push等数字能量数组独有方式 。如果有必须,能够 考虑到将Nodelist目标变为数字能量数组。

  1. myList = Array.prototype.slice.call(myNodeList); 

二、DOM实际操作

DOM自身就具备很丰富多彩的操作步骤,能够 替代jQuery出示的操作步骤。

尾端增加DOM原素。

  1. // jQuery书写  
  2. $(parent).append($(child));  
  3.  
  4. // DOM书写  
  5. parent.appendChild(child) 

头顶部插进DOM原素。

  1. // jQuery书写  
  2. $(parent).prepend($(child));  
  3.  
  4. // DOM书写  
  5. parent.insertBefore(child, parent.childNodes[0]) 

删掉DOM原素。

  1. // jQuery书写  
  2. $(child).remove()  
  3.  
  4. // DOM书写  
  5. child.parentNode.removeChild(child) 

三、恶性事件的监视

jQuery的on方式 ,彻底可以用addEventListener仿真模拟。

  1. Element.prototype.on = Element.prototype.addEventListener; 

为了更好地方便使用,能够 在NodeList目标上也布署这一方式 。

  1. NodeList.prototype.on = function (event, fn) {  
  2. []['forEach'].call(this, function (el) {  
  3. el.on(event, fn);  
  4. });  
  5. return this;  
  6. }; 

四、恶性事件的开启

jQuery的trigger方规律必须独立布署,相对性繁杂一些。

  1. Element.prototype.trigger = function (type, data) {  
  2. var event = document.createEvent('HTMLEvents');  
  3. event.initEvent(type, true, true);  
  4. event.data = data || {};  
  5. event.eventName = type;  
  6. event.target = this;  
  7. this.dispatchEvent(event);  
  8. return this;  
  9. }; 

在NodeList目标上也布署这一方式 。

  1. NodeList.prototype.trigger = function (event) {  
  2. []['forEach'].call(this, function (el) {  
  3. el['trigger'](event);  
  4. });  
  5. return this;  
  6. }; 

五、document.ready

现阶段的最佳实践,是将JavaScript脚本文件都放到网页页面底端载入。那样的话,实际上document.ready方式 (jQuery缩写为$(function))早已多余了,由于直到运作的情况下,DOM对象早已转化成了。

六、attr方式

jQuery应用attr方式 ,读写能力网页元素的特性。

  1.  $("#picture").attr("src", "h ttp://url/to/image"); 

DOM原素容许立即载入特性值,书写要简约很多。

  1. $("#picture").src = "http://url/to/image"; 

必须留意,input原素的this.value回到的是文本框中的值,连接原素的this.href回到的是肯定URL。假如必须采用这两个网页元素的特性精确值,可以用this.getAttribute('value')和this.getAttibute('href')。

七、addClass方式

jQuery的addClass方式 ,用以为DOM原素加上一个class。

  1. $('body').addClass('hasJS'); 

DOM原素自身有一个可读写能力的className特性,能够 用于实际操作class。

  1. document.body.className = 'hasJS';  
  2. // or  
  3. document.body.className  = ' hasJS';  

HTML 5还出示一个classList目标,作用更强劲(IE 9不兼容)。

  1. document.body.classList.add('hasJS');  
  2. document.body.classList.remove('hasJS');  
  3. document.body.classList.toggle('hasJS');  
  4. document.body.classList.contains('hasJS'); 

八、CSS

jQuery的css方式 ,用于设定网页元素的款式。

  1. $(node).css( "color", "red" ); 

DOM原素有一个style特性,能够 立即实际操作。

  1. element.style.color = "red";;  
  2. // or  
  3. element.style.cssText  = 'color:red'; 

九、数据信息存储

jQuery目标能够 存储数据信息。

  1. $("body").data("foo", 52); 

HTML 5有一个dataset目标,也是有相近的作用(IE 10不兼容),但是只有储存字符串数组。

  1. element.dataset.user = JSON.stringify(user);  
  2. element.dataset.score = score; 

十、Ajax

jQuery的Ajax方式 ,用以多线程实际操作。

  1. $.ajax({  
  2. type: "POST",  
  3. url: "some.php",  
  4. data: { name: "John", location: "Boston" }  
  5. }).done(function( msg ) {  
  6. alert( "Data Saved: "   msg );  
  7. }); 

我们可以界定一个request涵数,仿真模拟Ajax方式 。

  1. function request(type, url, opts, callback) {  
  2. var xhr = new XMLHttpRequest();  
  3. if (typeof opts === 'function') {  
  4. callback = opts;  
  5. opts = null;  
  6. }  
  7. xhr.open(type, url);  
  8. var fd = new FormData();  
  9. if (type === 'POST' && opts) {  
  10. for (var key in opts) {  
  11. fd.append(key, JSON.stringify(opts[key]));  
  12. }  
  13. }  
  14. xhr.onload = function () {  
  15. callback(JSON.parse(xhr.response));  
  16. };  
  17. xhr.send(opts ? fd : null);  

随后,根据request涵数,仿真模拟jQuery的get和post方式 。

  1. var get = request.bind(this, 'GET');  
  2. var post = request.bind(this, 'POST'); 

十一、动漫

jQuery的animate方式 ,用以转化成动漫实际效果。

  1. $foo.animate('slow', { x: ' =10px' }); 

jQuery的动漫实际效果,很绝大多数根据DOM。可是现阶段,CSS 3的动漫远比DOM强劲,因此能够 把动漫实际效果写进CSS, 随后根据实际操作DOM原素的class,来展现动漫。

  1. foo.classList.add('animate'); 

假如必须对动漫应用回调函数,CSS 3也界定了相对的恶性事件。

  1. el.addEventListener("webkitTransitionEnd", transitionEnded);  
  2.  
  3. el.addEventListener("transitionend", transitionEnded);  

十二、取代计划方案

因为jQuery容积过大,取代计划方案五花八门。

在其中,最知名的是zepto.js。它的设计方案总体目标是以最少的容积,保证较大适配jQuery的API。zepto.js 1.0版的初始尺寸是55KB,优化后是29KB,gzip缩小后为10KB。

假如不追求较大适配,只期待仿真模拟jQuery的基本要素,那麼,min.js优化后仅有200字节,而dolla优化后是1.7KB。

除此之外,jQuery自身选用控制模块设计方案,能够 只挑选应用自身必须的控制模块。具体方法参照它的github网址,或是应用专用型的Web页面。

来源于申明:以上内容一部分(包括照片、文本)来自互联网,若有侵权行为,请立即与本网站联络(010-57218159)。
如没特殊注明,文章均为酷站科技原创,转载请注明来自http://www.bjkuzhan.com/jianzhanzhishi/2522.html
联系专业的商务顾问,制定方案,专业设计,一对一咨询及其报价详情
服务热线服务热线 4006-5666-83
联系我们 contact us
4006-5666-83
400-6566-683 — 海淀营业部
400-6566-683 — 昌平营业部
+

酷站科技为你提供上门/网站策略方案

留下联系方式,我们将会在一个工作日内与你联系

隐私条款信息保护中,请放心填写