使用JavaScript原生API替换Jquery

来源:互联网 发布:python实现朴素贝叶斯 编辑:程序博客网 时间:2024/04/29 10:25
Query目前已经成为最流行的JavaScript库,它可以让开发者“write less, do more(写得更少,做得更多)”,这也是它的核心理念。通过它,用户可以更方便地处理HTML documents、events,更轻松地实现动画效果、AJAX交互等。 

尽管jQuery帮助开发者节省了大量的工作,但是并不是所有的产品都适合使用jQuery。jQuery 2.0.3版本有236KB,压缩版也有81KB,这意味着你的Web产品需要额外的加载时间和带宽,而在移动设备上则需要更多。 

如果你的产品中只有少量的前端效果或DOM操作,那么完全可以抛弃臃肿的jQuery,转而使用JavaScript原生API来实现。 



以下是jQuery和JavaScript实现相同操作的等价代码。 

选择元素 

Javascript代码 
  1. // jQuery  
  2. var els = $('.el');  
  3.   
  4. // 原生方法  
  5. var els = document.querySelectorAll('.el');  
  6.   
  7. // 函数法  
  8. var $ = function (el) {  
  9.   return document.querySelectorAll(el);  
  10. }  
  11.   
  12. var els = $('.el');  
  13.   
  14. // 或者使用regex-based micro-selector库,地址:http://jsperf.com/micro-selector-libraries  


创建元素 

Javascript代码 
  1. // jQuery  
  2. var newEl = $('<div/>');  
  3.   
  4. // 原生方法  
  5. var newEl = document.createElement('div');  


添加事件监听器 

Javascript代码 
  1. // jQuery  
  2. $('.el').on('event'function() {  
  3.   
  4. });  
  5.   
  6. // 原生方法  
  7. [].forEach.call(document.querySelectorAll('.el'), function (el) {  
  8.   el.addEventListener('event'function() {  
  9.   
  10.   }, false);  
  11. });  


设置/获取属性 

Javascript代码 
  1. // jQuery  
  2. $('.el').filter(':first').attr('key''value');  
  3. $('.el').filter(':first').attr('key');  
  4.   
  5. // 原生方法  
  6. document.querySelector('.el').setAttribute('key''value');  
  7. document.querySelector('.el').getAttribute('key');  


添加/移除/切换类 

Javascript代码 
  1. // jQuery  
  2. $('.el').addClass('class');  
  3. $('.el').removeClass('class');  
  4. $('.el').toggleClass('class');  
  5.   
  6. // 原生方法  
  7. document.querySelector('.el').classList.add('class');  
  8. document.querySelector('.el').classList.remove('class');  
  9. document.querySelector('.el').classList.toggle('class');  


附加内容(Append) 

Javascript代码 
  1. // jQuery  
  2. $('.el').append($('<div/>'));  
  3.   
  4. // 原生方法  
  5. document.querySelector('.el').appendChild(document.createElement('div'));  


克隆元素 

Javascript代码 
  1. // jQuery  
  2. var clonedEl = $('.el').clone();  
  3.   
  4. // 原生方法  
  5. var clonedEl = document.querySelector('.el').cloneNode(true);  


移除元素 

Javascript代码 
  1. // jQuery  
  2. $('.el').remove();  
  3.   
  4. // 原生方法  
  5. remove('.el');  
  6.   
  7. function remove(el) {  
  8.   var toRemove = document.querySelector(el);  
  9.   
  10.   toRemove.parentNode.removeChild(toRemove);  
  11. }  


获取父元素 

Javascript代码 
  1. // jQuery  
  2. $('.el').parent();  
  3.   
  4. // 原生方法  
  5. document.querySelector('.el').parentNode;  


上一个/下一个元素 

Javascript代码 
  1. // jQuery  
  2. $('.el').prev();  
  3. $('.el').next();  
  4.   
  5. // 原生方法  
  6. document.querySelector('.el').previousElementSibling;  
  7. document.querySelector('.el').nextElementSibling;  


XHR或AJAX 

Javascript代码 
  1. // jQuery  
  2. $.get('url'function (data) {  
  3.   
  4. });  
  5. $.post('url', {data: data}, function (data) {  
  6.   
  7. });  
  8.   
  9. // 原生方法  
  10. // get  
  11. var xhr = new XMLHttpRequest();  
  12.   
  13. xhr.open('GET', url);  
  14. xhr.onreadystatechange = function (data) {  
  15.   
  16. }  
  17. xhr.send();  
  18.   
  19. // post  
  20. var xhr = new XMLHttpRequest()  
  21.   
  22. xhr.open('POST', url);  
  23. xhr.onreadystatechange = function (data) {  
  24.   
  25. }  
  26. xhr.send({data: data});  


以上这些只是很少一部分,你可以在浏览器的控制台中找到更多东西,或者可以参考MDN的JS API reference或者WPD的DOM文档。 

你也可以使用其他非常轻量级的库代替,比如http://microjs.com/列出的一些库,根据你的需求选择最合适的库,但首先要清楚,除非是不使用库无法实现某项功能,否则还是使用原生JavaScript。 

英文原文:How to forget about jQuery and start using native JavaScript APIs
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电压力锅排气阀漏气怎么办 win10系统上不了网怎么办 手机自拍杆坏了怎么办 车辆遭核生化打击时怎么办? 遭核生化打击时怎么办? 车辆行驶中遭核生化打击时怎么办? 硫酸气体熏到嗓子怎么办 硫酸味儿进嗓子了怎么办 吸入二氧化氯气体后怎么办 衣服84消毒 变色了怎么办 我的身份证被诈骗犯知道了怎么办 母婴店来客人少怎么办 键盘驱动被卸载了怎么办 广州 狗狗随地大小便怎么办 上海 狗狗随地大小便怎么办 服装店人流量少生意差怎么办 2018年服装店生意特别差怎么办 打印机拍的照片打出黑怎么办 租的汽车撞了怎么办 神州租车车坏了怎么办 深圳市公安局办保安员证怎么办? 老婆被车撞了后失忆了怎么办 生气引起的短暂失忆怎么办 win10系统忘记开机密码怎么办 戴尔win10密码忘了怎么办 戴尔电脑win10密码忘了怎么办 出门忘记带身份证了怎么办 一年染了7次头发怎么办 低头久了颈椎疼怎么办 一只眼睛磨得慌怎么办 没有睡好眼睛痛怎么办 好几天没休息好怎么办 血糖高睡不好觉怎么办 眼睛感觉磨的慌怎么办 痔疮手术后大便疼肛裂痛怎么办 肛裂排便困难痛怎么办 智齿导致的牙疼怎么办 肛裂一直不愈合怎么办 孕妇肛裂拉屎疼怎么办 产后50天小肚子突出怎么办 肚子像怀孕一样大怎么办