精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

網(wǎng)站如何做到完全不需要jQuery

開發(fā) 前端
據(jù)統(tǒng)計,目前全世界57.3%的網(wǎng)站使用它。也就是說,10個網(wǎng)站里面,有6個使用jQuery。如果只考察使用工具庫的網(wǎng)站,這個比例就會上升到驚人的91.7%。

jQuery是現(xiàn)在最流行的JavaScript工具庫。

據(jù)統(tǒng)計,目前全世界57.3%的網(wǎng)站使用它。也就是說,10個網(wǎng)站里面,有6個使用jQuery。如果只考察使用工具庫的網(wǎng)站,這個比例就會上升到驚人的91.7%。

雖然jQuery如此受歡迎,但是它臃腫的體積也讓人頭痛不已。jQuery 2.0的原始大小為235KB,優(yōu)化后為81KB;如果是支持IE6、7、8的jQuery 1.8.3,原始大小為261KB,優(yōu)化后為91KB。

這樣的體積,即使是寬帶環(huán)境,完全加載也需要1秒或更長,更不要說移動設(shè)備了。這意味著,如果你使用了jQuery,用戶至少延遲1秒,才能看到網(wǎng)頁效果??紤]到本質(zhì)上,jQuery只是一個操作DOM的工具,我們不僅要問:如果只是為了幾個網(wǎng)頁特效,是否有必要動用這么大的庫?

[[72564]]

2006年,jQuery誕生的時候,主要用于消除不同瀏覽器的差異(主要是IE6),為開發(fā)者提供一個簡潔的統(tǒng)一接口。相比當時,如今的情況已經(jīng)發(fā)生了很大的變化。IE的市場份額不斷下降,以ECMAScript為基礎(chǔ)的JavaScript標準語法,正得到越來越廣泛的支持。開發(fā)者直接使用JavScript標準語法,就能同時在各大瀏覽器運行,不再需要通過jQuery獲取兼容性。

下面就探討如何用JavaScript標準語法,取代jQuery的一些主要功能,做到j(luò)Query-free。

[[72565]]

一、選取DOM元素

jQuery的核心是通過各種選擇器,選中DOM元素,可以用querySelectorAll方法模擬這個功能。

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

這里需要注意的是,querySelectorAll方法返回的是NodeList對象,它很像數(shù)組(有數(shù)字索引和length屬性),但不是數(shù)組,不能使用pop、push等數(shù)組特有方法。如果有需要,可以考慮將Nodelist對象轉(zhuǎn)為數(shù)組。

  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) 

三、事件的監(jiān)聽

jQuery的on方法,完全可以用addEventListener模擬。

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

為了使用方便,可以在NodeList對象上也部署這個方法。

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

四、事件的觸發(fā)

jQuery的trigger方法則需要單獨部署,相對復(fù)雜一些。

  1.   Element.prototype.trigger = function (type, data) {  
  2.     var event = document.createEvent('HTMLEvents');  
  3.     event.initEvent(type, truetrue);  
  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(thisfunction (el) {  
  3.       el['trigger'](event);  
  4.     });  
  5.     return this;  
  6.   }; 

五、document.ready

目前的最佳實踐,是將JavaScript腳本文件都放在頁面底部加載。這樣的話,其實document.ready方法(jQuery簡寫為$(function))已經(jīng)不必要了,因為等到運行的時候,DOM對象已經(jīng)生成了。

#p#

六、attr方法

jQuery使用attr方法,讀寫網(wǎng)頁元素的屬性。

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

DOM元素允許直接讀取屬性值,寫法要簡潔許多。

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

需要注意,input元素的this.value返回的是輸入框中的值,鏈接元素的this.href返回的是絕對URL。如果需要用到這兩個網(wǎng)頁元素的屬性準確值,可以用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方法,用來設(shè)置網(wǎng)頁元素的樣式。

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

DOM元素有一個style屬性,可以直接操作。

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

九、數(shù)據(jù)儲存

jQuery對象可以儲存數(shù)據(jù)。

  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函數(shù),模擬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);  
  18.   } 

然后,基于request函數(shù),模擬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'); 

如果需要對動畫使用回調(diào)函數(shù),CSS 3也定義了相應(yīng)的事件。

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

十二、替代方案

由于jQuery體積過大,替代方案層出不窮。

其中,最有名的是zepto.js。它的設(shè)計目標是以最小的體積,做到最大兼容jQuery的API。zepto.js 1.0版的原始大小是55KB,優(yōu)化后是29KB,gzip壓縮后為10KB。

如果不求最大兼容,只希望模擬jQuery的基本功能,那么,min.js優(yōu)化后只有200字節(jié),而dolla優(yōu)化后是1.7KB。

此外,jQuery本身采用模塊設(shè)計,可以只選擇使用自己需要的模塊。具體做法參見它的github網(wǎng)站,或者使用專用的Web界面。

原文鏈接:http://www.ruanyifeng.com/blog/2013/05/jquery-free.html

責(zé)任編輯:林師授 來源: 阮一峰的網(wǎng)絡(luò)日志
相關(guān)推薦

2019-10-15 18:30:28

機械硬盤硬盤Windows 10

2014-12-10 10:45:56

Android應(yīng)用權(quán)限

2009-11-20 11:37:11

Oracle完全卸載

2023-02-14 15:00:38

開發(fā)者ChatGPT

2021-05-27 12:04:57

M1芯片漏洞惡意軟件

2017-03-13 13:54:40

戴爾

2012-08-23 09:50:07

測試測試人員軟件測試

2009-11-23 12:45:22

2011-11-09 15:49:52

API

2015-09-30 09:57:53

天分熱情工程師

2013-12-02 09:43:29

字符串編程

2015-08-20 10:56:19

算法界面開發(fā)

2024-02-22 09:00:00

LogitMat數(shù)據(jù)集算法

2021-12-12 22:20:47

Docker開發(fā)容器

2013-07-18 09:21:32

代碼文檔

2010-11-23 10:55:47

跳槽

2014-01-17 13:09:48

Linux碎片整理

2022-09-14 15:10:40

前端架構(gòu)

2022-02-15 07:26:34

web前端算法題

2018-01-29 13:18:42

前端JavaScript
點贊
收藏

51CTO技術(shù)棧公眾號

欧美性xxxx69| 亚洲国产精品网站| 天天成人综合网| 99国产精品99| 狠狠色狠狠色综合日日tαg| 欧美成人一区二区三区片免费| 日本五级黄色片| 涩涩视频免费看| 久久精品一区| 日韩亚洲一区二区| 国产不卡的av| 伊人成综合网站| 国产精品午夜在线| 91在线看www| 91精品国产高潮对白| 伊人精品一区| 欧美日韩电影在线播放| 国内少妇毛片视频| 天天干天天爱天天操| 日韩国产在线观看| 欧美大尺度激情区在线播放| 日韩无码精品一区二区| 人人鲁人人莫人人爱精品| ●精品国产综合乱码久久久久| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 国产免费xxx| 天堂av网在线| 韩国三级在线一区| 欧美一级淫片aaaaaaa视频| 美女三级黄色片| 免费观看成人www动漫视频| 色域天天综合网| 路边理发店露脸熟妇泻火| 四虎影视在线观看2413| 精品一区二区三区免费播放| 欧美激情性做爰免费视频| 成人无码av片在线观看| 黑色丝袜福利片av久久| 欧美精品久久一区| 国产又黄又大又粗视频| wwwxxx在线观看| 成人精品gif动图一区| 国产精品日韩欧美| 欧美一二三区视频| 99久久夜色精品国产亚洲96| 国产丝袜一区视频在线观看 | 123区在线| 亚洲欧美在线另类| 日韩美女一区| 六月婷婷综合网| 国产综合色产在线精品| 国产成人精品在线观看| 国产成人一区二区三区影院在线| 亚洲激情五月| 在线成人一区二区| 自拍偷拍中文字幕| 国产精品毛片视频| 日韩欧美色综合网站| 鲁鲁视频www一区二区| 亚洲va欧美va| 懂色av一区二区三区免费看| 成人免费在线看片| 理论片中文字幕| 成人黄色国产精品网站大全在线免费观看 | 婷婷丁香久久| 91精品国产一区二区三区香蕉| 亚洲免费999| 国产美女视频一区二区| 日韩一级精品视频在线观看| 色哟哟网站在线观看| 国产精品久久久久久久久久白浆| 亚洲国产精品中文| 播金莲一级淫片aaaaaaa| 精品国产乱码| 久久九九免费视频| 久草成人在线视频| 中文精品在线| 国产精品视频免费在线观看| 国产尤物在线观看| 成人做爰69片免费看网站| 精品综合久久久| eeuss影院www在线观看| 亚洲精品欧美激情| 黄色免费福利视频| 91p九色成人| 欧美成人午夜电影| 国产精品视频免费在线观看| 在线精品免费视| 日韩激情一二三区| 1卡2卡3卡精品视频| 欧美视频久久久| 日本一区二区在线不卡| 日韩视频一二三| 欧美色网一区| 欧美一级艳片视频免费观看| 粉嫩av懂色av蜜臀av分享| 波多野结衣在线观看一区二区 | 久久免费手机视频| 欧美永久精品| 奇米四色中文综合久久| 国产三级视频在线播放| 2021国产精品久久精品| 超碰在线免费观看97| 国产h片在线观看| 欧美日韩电影在线| 插吧插吧综合网| 午夜精品久久久久久久四虎美女版| 性色av一区二区三区免费 | 精品日产卡一卡二卡麻豆| 舐め犯し波多野结衣在线观看| 综合激情一区| 国产精品福利网| www.桃色av嫩草.com| 国产调教视频一区| 韩日视频在线观看| 日韩制服诱惑| 精品一区二区电影| 国产一级aa大片毛片| 免费成人在线视频观看| 久久久久久国产精品一区| av网站在线免费看推荐| 欧美色网站导航| 久久午夜夜伦鲁鲁片| 欧美阿v一级看视频| 国产精品日韩一区| 蜜桃视频在线免费| 天天av天天翘天天综合网| 在线观看欧美一区二区| 99久久精品网| 国产精品人成电影在线观看| 国产专区在线播放| 欧美日韩免费在线观看| 少妇搡bbbb搡bbb搡打电话| 国产精品传媒精东影业在线| 国产成人高清激情视频在线观看| 殴美一级特黄aaaaaa| 一区二区三区中文字幕精品精品 | 亚洲国产激情av| 777米奇影视第四色| 91成人短视频| 九九视频这里只有精品 | 国产精品18久久久久久久久久久久 | 最新国产黄色网址| 久久精品高清| 国产精品综合久久久| 波多野结衣在线网站| 日韩在线第三页| 欧美日韩国产影片| 3d动漫精品啪啪一区二区下载| 欧美另类专区| 91久色国产| 2020国产在线视频| 欧美一区二区久久| 欧美精品久久久久性色| 国产剧情一区二区| 波多野结衣与黑人| 亚洲精品一区在线| 欧美高清激情视频| 欧美性受xxxx狂喷水| 亚瑟在线精品视频| 国产中文字幕一区二区| 久久久久国产精品一区三寸 | 欧美国产激情视频| 美女毛片一区二区三区四区| 国产z一区二区三区| 二区在线视频| 欧美日韩第一区日日骚| 午夜国产福利一区二区| 国产不卡视频在线播放| 黄网站欧美内射| 亚洲理论电影片| 国产精品av免费在线观看| 成年在线观看免费人视频| 欧美日韩美少妇| 视频这里只有精品| 成人黄色小视频在线观看| 无码精品国产一区二区三区免费| 少妇精品久久久一区二区| 国产精品激情av电影在线观看| 日本三级在线视频| 91精品国产乱| 国产超碰人人爽人人做人人爱| 久久精品在线免费观看| 国产成人美女视频| 亚洲国产导航| 美脚丝袜一区二区三区在线观看| 成人四虎影院| 欧美丰满少妇xxxx| 国产在线观看网站| 日韩一级黄色片| 无码人妻精品一区二区三区9厂| 国产精品二三区| 91黄色免费视频| 蜜桃视频一区二区三区在线观看| 99久久99久久精品| 九色精品国产蝌蚪| 亚洲最大的av网站| 伊人久久视频| 久久久国产精彩视频美女艺术照福利| 欧性猛交ⅹxxx乱大交| 欧美色网一区二区| 日韩欧美一级视频| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲欧洲一二三| 欧美91在线| 91亚洲精品在线| 中文字幕成在线观看| 欧美成人午夜视频| 国产三级在线观看| 精品久久久久香蕉网| 中文字幕在线播放av| 欧美日韩国产限制| www深夜成人a√在线| 久久亚洲精华国产精华液 | 亚洲怡红院av| 欧美日韩国产综合新一区| 老熟妇高潮一区二区三区| 91免费视频大全| 少妇丰满尤物大尺度写真| 美国毛片一区二区| 免费在线观看毛片网站| 在线播放一区| 日本a在线天堂| 91欧美日韩| 日本一区网站| 香蕉视频一区二区三区| 精品不卡一区二区三区| 一区二区三区四区高清视频 | 一区二区三区资源| 麻豆精品国产免费| 国产欧美日韩卡一| 久操视频免费看| xnxx国产精品| 免费黄色三级网站| 国产·精品毛片| 原创真实夫妻啪啪av| 久久国产综合精品| 91小视频网站| 美女在线一区二区| 色悠悠久久综合网| 日本少妇一区二区| 天天爽人人爽夜夜爽| 久久午夜影视| 国产偷人视频免费| 久久综合九色| 好男人www社区| 日本女人一区二区三区| 男女视频一区二区三区| 日韩精品一二三| 中文久久久久久| 秋霞影院一区二区| 国产三级三级看三级| 美女视频黄免费的久久| 天天干天天av| 国模少妇一区二区三区| 欧美一级免费在线| 高清免费成人av| 黄色网址在线视频| 久久久影院官网| 1024手机在线观看你懂的| 国产欧美日本一区二区三区| 九九热久久免费视频| 亚洲视频在线一区观看| 九九九在线视频| 午夜影视日本亚洲欧洲精品| 日韩久久中文字幕| 在线免费观看一区| 国产精品久久无码一三区| 欧美一区二区黄| 无码国产伦一区二区三区视频| 国产视频精品在线| aaa在线观看| 欧美成人网在线| 国产v日韩v欧美v| 国产精品久久久久久久久久久久| 日韩毛片免费看| 成人在线观看网址| 最新亚洲精品| 亚洲第一精品区| 亚洲激情不卡| 久久综合伊人77777麻豆最新章节| 久久99精品久久只有精品| 曰本三级日本三级日本三级| 久久只精品国产| 在线观看黄网址| 亚洲 欧美综合在线网络| 亚洲天堂视频在线播放| 欧美成人精品高清在线播放| 青青草视频免费在线观看| 久久精品99国产精品酒店日本 | 亚洲在线视频一区| 日韩手机在线视频| 这里只有精品电影| 天堂av网在线| 久久999免费视频| 亚洲第一二三四区| 爱情岛论坛亚洲入口| 精品视频99| 真人抽搐一进一出视频| 麻豆精品精品国产自在97香蕉| 亚洲一二三四五| 国产精品丝袜久久久久久app| 国产午夜久久久| 欧美剧在线免费观看网站| 亚洲人妻一区二区三区| 久久国产精品免费视频| 久久91导航| 国产亚洲欧美一区二区| 婷婷综合伊人| 欧美精品第三页| av亚洲精华国产精华精华| 日韩三级在线观看视频| 色爱区综合激月婷婷| 黄色一级a毛片| 久热爱精品视频线路一| 日韩漫画puputoon| 久久一区二区三区欧美亚洲| 欧美激情第10页| 亚洲怡红院在线| 国产女主播一区| 五月激情六月丁香| 亚洲大尺度美女在线| 国产传媒在线播放| 国产精品久久视频| 最新国产一区| 国产亚洲欧美在线视频| 成人免费高清在线观看| 欧美特级一级片| 欧美久久婷婷综合色| 97超碰人人在线| 国产成人鲁鲁免费视频a| 日韩aaa久久蜜桃av| 精品国偷自产一区二区三区| 国产91在线|亚洲| www.av视频| 91精品国产入口在线| 免费**毛片在线| 91精品国产综合久久香蕉| 国产精品免费不| 日本在线观看a| 久久免费视频色| 久久久久久不卡| 国产亚洲日本欧美韩国| 欧洲av一区二区| 亚洲精品国产精品国自产| 青娱乐精品视频在线| 精品一区二区三区蜜桃在线| 色素色在线综合| youjizz在线播放| 国产精品爽黄69天堂a| 久久精品av| 亚洲自拍第三页| 亚洲精品中文在线影院| 亚洲精品字幕在线观看| 久久久久亚洲精品| 欧美freesex8一10精品| 欧美 国产 综合| 久久久综合精品| 最近日韩免费视频| 精品国内亚洲在观看18黄| 国产一区二区在线观| 日韩精品久久一区二区| 99久久亚洲一区二区三区青草| www.国产一区二区| 中文字幕欧美精品日韩中文字幕| 国产69精品久久| 黄色录像特级片| 成人久久久精品乱码一区二区三区| 国产无码精品久久久| 日韩精品久久久久| 成人精品三级| 欧洲xxxxx| 99久久久精品| 欧美日韩a v| 不卡av日日日| 欧亚精品一区| 激情五月俺来也| 亚洲一区二区影院| 欧美女v视频| 91在线无精精品一区二区| 在线观看亚洲| 性猛交ⅹxxx富婆video | 亚洲一区二区三区激情| 丝袜+亚洲+另类+欧美+变态| 国产精品亚洲欧美导航| 欧美视频官网| 怡红院一区二区三区| 91精品国产aⅴ一区二区| 国产资源在线观看入口av| 亚洲高清视频一区| 粉嫩久久99精品久久久久久夜| 伊人中文字幕在线观看| 欧美成年人视频网站欧美| 丝袜连裤袜欧美激情日韩| 日本三级黄色网址| 欧美视频国产精品| 伊人手机在线| 视频一区二区三区在线观看| 国产v日产∨综合v精品视频| 欧美日韩 一区二区三区|