怎麼運用JavaScript架構提高web順序效率

來源:互聯網
上載者:User

摘要:當代網站和web使用順序趨向於依託用戶端的大量的javascript來提供豐厚的互動。特別是議決不重新整理頁面的非同步央求來前往資料或從伺服器端的指令碼(或資料系統)中得到呼應。在這篇文章中,你將會明白到javascript架構如何更快、更簡約的樹立互動性強、呼應快得網站和web使用順序。

導言:JavaScript是一種物件導向的指令碼言語,不斷以來用作Web瀏覽器使用順序用戶端指令碼介面的挑選。JavaScript准許Web開發人員編程與網頁上的對象的任務,為憑空操作這些對象提供了一個平台。當JavaScript開始推出時,它通常用來提供一些微缺乏道的功用,如時鐘、在瀏覽器形態欄中滾動文本。另外一個常用特徵就是“rollover link”,即當使用者的滑鼠滑過對象時,其文本的顏色或背景圖片發作改動。但是,近年來Ajax為網路編程帶來了全新的互動,JavaScript幾經生長變得愈加有用。在Ajax之前,任何伺服器端處理或資料庫訪問都須要整頁面被“重新整理”或由瀏覽器出現新的頁面。這不只緩慢,令使用者絕望,並且也糜費了頻寬和資源。

Ajax就是非同步JavaScript和XML,雖然援用XML不在有效,但是Ajax能對除了XMl的其它幾種格式的資料作出呼應,如JSON(JavaScript對象標記法)。 Ajax的任務原理是,以非同步方式提交一個 HTTP央求提交到web伺服器,不重新整理也不出現整個頁面,僅出現呼應的內容。相反,開發人員通常運用DOM(文件物件模型)操作修正網頁的一局部,HTTP呼應前往的資料將反映這些改動。

什麼是JavaScript架構?

JavaScript自身是一種十分強悍的言語,你不須要任何額定的架構就可以樹立由它支援的富互連網使用系統(RIA)。但是,運用JavaScript並不是一件容易的事,首要是由於在試圖提供多種瀏覽器支援時各種併發症的出現。和HTML和CSS一樣,不一樣的瀏覽器的JavaScript執行方式不一樣,那麼確保您的JavaScript代碼跨瀏覽器安全色可以說是一個惡夢。

一個JavaScript架構或庫實踐上是一系列工具和函數,它能更容易發生跨瀏覽器安全色的JavaScript代碼。每個庫在許多盛行的最新版本的Web瀏覽器閱曆了嚴厲測試。因而,您完全可以相信,運用這些架構中的任何一個,您的基於JavaScript的RIA在不一樣的瀏覽器安寧台中將大體一致。

除了瀏覽器安全色性疑問外,JavaScript架構可以更容易地編寫代碼去擷取、遍曆及操縱DOM元素。它們不只能提供一個快捷的函數來擷取一個DOM元素的援用,並且還准許菊花式的DOM遍曆函數鏈尋找父母、子女或任何深度的兄弟節點元素。開頭,架構提供了一系列的函數,使其更容易的操縱這些對象,准許其內容修正、添加、刪除,或許操縱class的樣式而影響元素的外觀。器事情處理可以說是一個惡夢。因而,JavaScript架構通常將瀏覽器事情封裝起來,並提供一系列有用的跨瀏覽器函數來處理它們。一些架構也提供了正常化的代表鍵盤鍵碼系列的事情(如Esc鍵、Enter鍵、游標等等)。

 

一切這些功用是十分有用的,JavaScript架構已在其近來盛行Ajax使用中起主要作用。和JavaScript其他方面一樣,每個Web瀏覽器傾向於支援以不一樣的方式Ajax,使Ajax支援一切的瀏覽器將是很繁重的任務。幾乎一切的JavaScript架構都包括必需方式的Ajax庫,通常是提供Ajax央求和呼應對象,在對呼應作出評價後,更新DOM元素,輪詢一個特定的央求。

一個JavaScript架構的典型特徵

如今讓咱們看看大非少數JavaScript架構都具有的一些功用。這些特徵有:

  • 挑選器
  • DOM遍曆
  • DOM操作
  • 適用函數
  • 事情處理
  • Ajax

為了更好的詮釋這些特徵,我將從下面一個或多個JavaScript架構中羅列一個例子:Prototype, jQuery, YUI,ExtJS和 MooTools。雖然每個架構的執行情況和文法不一樣,但其觀念大致類似。每個架構有一個細緻的API參考,你可以參考它決議如何運用這些特定庫的特徵功用。

挑選器

大非少數JavaScript架構可完成某種方式的高速元素挑選。普通來說,這些挑選器使擷取一個元素的援用愈加速捷,並准許你議決ID、class、元素類型或一些偽類挑選符來選取元素。

比如,運用通常的JavaScript,你可以運用下面的代碼藉助ID來獲得DOM元素。

var theElement = document.getElementById('the_element');

與其他多個架構一樣,MooTools提供了一個執行該操作的快捷方法。除了挑選元素,MooTools議決自己一系列的功用函數擴充了元素。

var theElement = $('the_element');

$函數在多個盛行的架構(並非一切)中可用,其文法大致類似。Prototype更深一層,議決ID在任什麼時辰候可以挑選多個元素,前往的是一個元素數組。與的文法是這樣的:

 

var elementArray = $('element_one', 'element_two', 'element_three');

在適用函數這一局部,你將明白到JavaScript架構提供的一些函數迭代咱們的集合愈加容易。

在先面的例子,你必需提供你欲挑選元素的ID。但是,你要挑選多個元素該如何辦?一切image、擁有特定className的表格的每一行。MooTools(其它的多個庫)提供了一個十分容易的方法來做到這一點--$$函數。除了元素的ID外,他還可以接受以下參數:元素的名字、類名以及偽類挑選器,其任務原理與$函數類似。比如,運用MooTools擷取頁面上一切的圖片,你可以運用下面的代碼:

var allImages = $$('img');

這將得到文檔中一切imag的數組,每一個議決$函數和原本用函數執行擴充。

議決tag標籤來選取對象是十分有用的,但假設你只想基於元素的class選取它的局部子集,遮蓋如何辦?一樣很容易。在下面的例子中,MooTools將挑選table中class為“odd”的行,這在對每行執行操作時很有用(交替變換表格每一行的顏色)。

var allOddRows = $$('tr.odd');

現實上,MooTools提供了一個更好的方法執行行操作。在先面的例子中,假定table的奇數行授予了類名“odd”。那麼下面的代碼不須要在table的每一行上定義任何類名。

var allOddRows = $$('tbody <IMG class=wp-smiley alt=:o src="/img/2010-4-20/2010420837462218.gif"> dd');

這是一個偽類挑選器的例子,它前往婚配規範的任何對象。在這個例子中,後果為頁面中tbody元素中一切奇數行的子項目。MooTools其它偽類元素的例子包括:

  • checked 一切被選中的元素(比如:選中的複選框);
  • enabled 一切可用的元素;
  • contains 一切包括文本(作為參數傳遞給挑選器)的元素。

如前所述,並非一切的JavaScript架構都運用$函數來選取DOM元素。在YUI(Yahoo使用者介面)的第三個版本中,下面的代碼是議決ID來選取元素的(留意:YUI3須要在ID前加上字元#)。

一樣,議決tag或class來選取元素也不是運用$$函數,在YUI中你要運用Y.all來替代。

var allOddRows = Y.all('tr.odd');

ExtJS以一樣的方式任務,議決ID挑選元素用下面的文法:

var theElement = Ext.get('the_element') ;

而議決tag和class來擷取元素則用下面的文法:

var allOddRows = Ext.select('tr.odd');

在下一章中,你將明白到如何運用JavaScript架構來悄悄鬆鬆遍曆DOM對象,換句話說,找到與選定元素有父子和兄弟聯絡的元素。

轉載地址:http://www.denisdeng.com/?p=699

原文地址:http://www.ibm.com/developerworks/web/library/wa-jsframeworks/index.html

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.