成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

您的WebApp真的需要jQuery嗎?

開發 前端
首先要承認jQuery的強大魅力,是jQuery陪伴著我們度過桌面瀏覽器開發的每一天,但是在移動瀏覽器項目中,比如WebApp,你真的愿意引用這樣一個龐大且腫脹的前端框架么?你真的需要它么?

首先要承認jQuery的強大魅力,是jQuery陪伴著我們度過桌面瀏覽器開發的每一天,它的使用輕巧人人皆知,這是桌面瀏覽器項目常用的主流框架之一。但是在移動瀏覽器項目中,比如WebApp,你真的愿意引用這樣一個龐大且腫脹的前端框架么?你真的需要它么?其實你不需要,因為現在的高端移動設備中的API已經足夠了。

接下來我們談談你應該在移動設備上放棄jQuery的理由。

為什么前端工程師需要在乎移動設備上的前端框架?

眾所周知,移動設備與固定裝置最明顯的一點不同是:帶寬的問題。在移動設備上加載外部資源肯定要比固定裝置設備加載外部資源要緩慢的多。我們將問題引向前端框架,jQuery***版本的min版本為77KB,僅這一點就需要前端工程師折衷。

jQuery中占了很大一個比重的則是Sizzle選擇器,這是一個兼容多平臺的javascript selector開源框架,但是在移動設備中我們真的不需要這個Sizzle選擇器,另外一部分則是jQuery的動畫類庫,這個也是兼容多平臺的動畫類庫,但是在WebApp中,我們同樣不需要,我們需要CSS 3的translate和animation即可完成需求,***一個算是jQuery的OOP了,這個完全不需要,開發者完全可以根據自己的專業技能封裝一套OOP的方法。

首先來看javascript selector

我們做DHTML網站通常情況也都是對DOM做操作,jQuery可以說是一個非常輕巧且功能強大的靈活操作DOM的JavaScript框架,你在使用jQuery操作DOM時,就像是在玩魔術一樣的神奇,這也正是jQuery的設計初衷。

但是當前你的用戶群是Iphone、Android、Ipad、Blackberry等等一些高端用戶時,你不應該為了使用選擇器而再引入這樣一個龐大的JavaScript框架,你應該這樣做:

  1. document.querySelector(DOM);  

querySelector是一個更容易、更快、更可靠的本地選擇器引擎。你也可以利用3行代碼封裝一個像jQuery那樣的函數來使用選擇器

  1. function $(query) {    
  2.      return document.querySelectorAll(query);    
  3. }  

這里就有你喜歡的$,僅僅3行代碼就搞定了!你也許可能會問利用getElementById獲取DOM會更加的快,這很不錯。getElementById方法獲取DOM確實快些,但是這個方法適用于頁面中元素較多的情況下,你才能夠感覺到它的快感,但是WebApp是不可能在同一張頁面中有很多元素的,它不會像Web產品一樣。所以在這里我不建議前端工程師為了這個感覺不到的快,而放棄使用querySelectorAll/querySelector而使用getElementById重新封裝。而且在實際的項目開發中,你也可以將獲取到的DOM保存在變量中,這樣也同樣減少了對DOM的訪問。

DOMReady Function

當然,有些時候我們可能需要等待DOM加載完畢后才去執行我們的function。jQuery有ready方法,我們同樣可以擁有自己我的ready方法。

  1. function ready (fn) {    
  2.     document.addEventListener('DOMContentLoaded', fn, false);    
  3. }  

所以的函數的都將在DOM元素加載完畢后,立刻執行,這里不包括image|audio|video。

  1. ready(function (){    
  2.     alert($('#demo')[0].innerHTML);    
  3. });  

可能你已經發現了,這樣的ready方法并不是很靈活。首先你不能夠卸載DOMContentLoaded事件,每調用ready方法,都會為document注冊DOMContentLoaded事件;其次當DOM加載完畢后,僅僅執行了一個函數的一次調用。這不是我們想要的,我們需要改進它。

  1. var readyFuns = [];    
  2. function DOMReady(){    
  3.     for(var i=0,l=readyFuns.length;i<l;i++){    
  4.       readyFun[i]();    
  5.     }    
  6.     readyFuns = null;    
  7.     document.removeEventListener('DOMContentLoaded',DOMReady,false);    
  8. }    
  9. function readyFun(fn){    
  10.     if(readyFuns.length == 0){    
  11.        document.addEventListener('DOMContentLoaded',DOMReady,false);    
  12.     }    
  13.     readyFuns.push(fn);    
  14. }  

這樣貌似解決了我們以上的兩個問題。現在的DOMReady方法可以保證在DOM加載完畢后,一次執行多個函數,且支持卸載DOMContentLoaded事件。在WebApp中封裝一個domready方法,你無需考慮IE瀏覽器或其它的濟覽器,僅僅考慮WebKit內核的瀏覽器即可,所以你可以使用一對removeEventListener和addEventListener。這兩個方法同樣也是W3C的標準方法,所以我們已經覆蓋了jQuery的DOMReady50%的代碼。

【編輯推薦】

  1. Django創始人:從技術工藝上考量jQuery
  2. MooTools團隊成員:我們為何強于jQuery
  3. jQuery作為“JavaScript庫MVP”的12大理由
  4. jQuery讓開發者戀戀不舍的秘密
  5. 不只是口號 jQuery的設計藝術
責任編輯:王曉東 來源: ychi的博客
相關推薦

2020-03-04 10:13:55

Kubernetes容器開發

2020-06-16 08:58:08

數據湖數據數據庫

2020-04-17 14:25:22

Kubernetes應用程序軟件開發

2022-08-15 10:42:50

千兆網絡千兆光纖

2017-08-24 08:18:00

2010-09-02 13:32:52

jQueryjQuery插件

2012-04-16 10:15:13

JQuery插件開發

2020-11-19 09:07:56

Service接口CTO

2020-03-04 17:32:56

DevOpsDocker軟件

2016-12-05 14:30:47

網絡通信網絡電話

2019-05-30 09:22:06

5G網絡互聯網

2015-12-23 10:00:04

多種編程語言

2024-05-07 08:43:30

Service分層設計接口

2022-06-06 12:02:23

代碼注釋語言

2024-06-20 13:50:53

Vue 3API開發

2020-11-02 09:00:15

5G云原生互聯網

2022-12-09 16:19:09

以太網綜合布線故障

2020-06-10 07:37:01

自由軟件開源軟件免費軟件

2023-09-22 07:52:16

HDMI 2.14K HDR游戲
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日在线 | www.久久.com| 久久久性色精品国产免费观看 | 四虎在线播放 | av久久 | 国产清纯白嫩初高生在线播放视频 | 精品成人佐山爱一区二区 | 欧美视频1区 | 欧美成人自拍 | 91精品久久久 | 久久99精品久久久久婷婷 | 亚洲久久久 | 精品www | 男女羞羞视频免费看 | 亚洲综合国产 | 亚洲国产精品一区 | 国产精品一区二区在线 | 国产一区二区三区四区在线观看 | 久久大陆 | 激情久久网 | а天堂中文最新一区二区三区 | 国产精品一区在线 | 久久久精品视频一区二区三区 | 久久中文字幕一区 | 毛片网站在线观看视频 | 最新超碰| 国产一区二区高清在线 | 久久这里有精品 | 久久久精品一区 | 美女一区 | 久色视频在线观看 | 欧美在线观看免费观看视频 | 欧美视频一区二区三区 | 人人爽日日躁夜夜躁尤物 | 久久久久国产一区二区三区 | 日韩色在线 | 亚洲国产一区二区三区, | 国产精品国产a级 | 欧美视频免费 | 午夜丰满少妇一级毛片 | 狠狠操婷婷 |