久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

jquery 有害的

 昵稱10504424 2015-04-27
2015-04-26 20:24 by 勤勞的插秧哥, 356 閱讀, 3 評論, 收藏, 編輯

原文:http://lea./2015/04/jquery-considered-harmful/**
(第一次翻譯,,望大家多批評指正)

jQuery是有害的

  嗨,,我總想寫一個“X”是有害的帖子。

在開始寫前,,我想說jquery 很大程度上促進了前端的發(fā)展,。它讓開發(fā)人員實現(xiàn)了以前不敢想象的事情,并促使瀏覽器開發(fā)商做他們本來就該做的事,。(沒有jquery我們估計現(xiàn)在還不可能用到document.querySelectorAll)對于那些不支持現(xiàn)有新技術的IE8及其以下瀏覽器jQuery依然很有必要,。

  但無論怎么說那些低端瀏覽器畢竟是少數(shù),很多開發(fā)人員不需要支持只占很小份額的老版本瀏覽器,。別忘了還有那些非專業(yè)開發(fā)人員:學生和研究人員,,他們不僅不需要支持低版本瀏覽器,而且只需一個瀏覽器支持就夠了,。如您所愿,,在學術界人人都津津樂道于使用網絡開放平臺的新技術,對吧,?然而我卻從未見過jQuery在業(yè)界這么突出,。為什么?因為眾所周知,,他們沒有時間或興趣追隨網絡開放平臺的最新動態(tài),。他們不知道他們需要什么樣的jquery,導致他們只是單純的使用jquery,。然而這并不是我拋棄jquery的唯一理由,。

是的,你可能真的不需要它

  我當然不是第一個指出jQuery的依賴程度影響你原生js的能力,,因此我不想浪費時間重復別人之前所寫,,你只需訪問以下鏈接:

  你可能不需要jquery

  你不需要jquery!

  你真的需要jquery嗎?

  脫離jquery編寫javascript的10個技巧

...還有很多,,你只需谷歌一下“you don’t need jQuery”你將發(fā)現(xiàn)更多,。我也不再花時間贅述jQuery文件大小以及原生js方法有多高效,這些我之前都講過,。今天,,我想說一個不常被提及的要點。

但那并不是放棄它的最大原因

  為了避免擴展本地元素的原型,,jquery使用它自己的包裝對象,,擴展本地對象在過去是一個龐大的 不,不,。不僅因為潛在沖突,,還有低版本IE瀏覽器內存泄漏。因此當你運行$(“div”)時返回的并不是一個元素引用或一個節(jié)點集合而是一個jQuery對象,。這意味著對于,,jquery對象的實現(xiàn)方式完全不同于一個DOM元素的引用、一個數(shù)組或其他類型的節(jié)點列表,。然而,,對于這些本地對象,就像jquery試圖提取出他們一樣,,你總要不得不處理他們,,哪怕他們包裝在$()中。例如:當回掉函數(shù)通過jQuery的bind()方法調用時上下文就是一個對HTML元素的引用而不是jquery的一組對象,。更別提你的代碼還是多源的,,有些想當然是jQuery代碼,有些則不是,,最終代碼總會混淆著jQuery對象,、本地對象、節(jié)點列表,,而這正是地獄的開始,。

  如果開發(fā)人員遵循一個命名規(guī)則:用變量包裹jQuery對象(我認為在變量名頭部添加一個$是常見的一種)和本地元素,這將不再是個問題(但人們總是記不住規(guī)則,,這里就先假定一個理想世界)然而,,現(xiàn)實中并沒有那么多規(guī)則被遵守,結果就是對于不熟悉代碼的人來說代碼變得極其難懂?,F(xiàn)在每一次編寫代碼都需要很多嘗試和錯誤(“哦,!這不是一個jQuery對象,我要用$()來包裹它”或者“哦,!這不是一個元素,,我要用[0]來獲取其中的元素”) 為了避免混淆,,開發(fā)人員編碼時常防御性的用$()包裹所有東西,因此總覽代碼,,相同的變量經過$()的多重包裹,,同樣的原因,這會變得很難重構其他jQuery代碼,,你完全被困住了,。

  即使遵循了命名規(guī)則,也不能只用在jQuery對象上,,你經常需要用到本地DOM方法或調用不屬于jQuery而來自其于他腳本中的函數(shù)。很快,,多次折騰jQuery對象弄得到處都是,,把你的代碼搞的很亂。

  除此之外,,當你往代碼庫中添加代碼的時候,,你往往會用$()來包裹每個元素或節(jié)點列表。因為你不知道你得到了什么樣的輸入,。所以被困住的不僅僅是你自己,,你以后為同一個代碼庫所寫的代碼也被困住了。

  獲得任何帶有jQuery依賴性的隨機腳本,,你沒有自己寫并試圖重構它,,這樣它就不需要jQuery。我敢說,,你會發(fā)現(xiàn)你的主要問題將不會是如何轉換功能使用本地APIs, 而是理解這到底是怎么一回事,。

一個通往原生JS的可靠途徑

  當然,現(xiàn)在許多函數(shù)庫需要jQuery,,就像最近我在推特上所說的那樣,,如果你回避jQuery那么感覺你像是個數(shù)碼素食者。當然,,這并不意味著你必須要使用它,。當好的非jQuery代替品可用的時候,函數(shù)庫也將會被取代,。

  同樣的,,大多數(shù)函數(shù)庫的寫法不需要用$作為jQuery的別名。用jQuery.noConflict()方法可更改默認的$并且你也可改成其他你看著順眼的符號,,例如,,受命令行API的啟發(fā),我經常定義這些幫助函數(shù):

復制代碼
//返回匹配到expr的第一個元素
//查詢范圍限制在container的后代中
function $(expr, container) { 
    return typeof expr === "string"? (container || document).querySelector(expr) : expr || null;
}

//以數(shù)組的

    本站是提供個人知識管理的網絡存儲空間,,所有內容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多