搜尋
首頁web前端js教程Zepto.js:揭開不可或缺的元素

Zepto.js:揭開不可或缺的元素

現代 JavaScript 函式庫是相當龐然大物-看看 jQuery 就知道了。當您創建行動應用程式時,甚至只是針對現代瀏覽器時,更簡潔、更靈活的庫就會成為更美味的建議。

今天,我們將介紹一個這樣的函式庫,名為 Zepto。


#混合桌面庫和行動裝置的問題

行動裝置的興起已經讓大多數人忽略了。

你看,網路以及支援網路的技術在過去幾年中取得了突飛猛進的發展。我們從靜態網站轉移到 Web 應用程序,再到動態 Web 應用程序,然後再到當今的即時、超響應性 Thingamabob 應用程式。大多數人都沒有註意到的一件事是行動裝置的興奮。

想想:我們很多人都使用智慧型手機並經常用它來瀏覽。即使在家裡,我圈子中的一個重要部分也採用了平板電腦設備來休閒上網和發送電子郵件。雖然從曝光的角度來看,這種設備的湧入是件好事,但也有一些警告。

作為開發人員,我們不應像消費者一樣將這些設備視為顯示受限,而是需要從資源和頻寬的角度來考慮它們。並非所有裝置都配備超四兆千兆 CPU 或配備大量記憶體。我們甚至不會從頻寬開始。有很大一部分瀏覽人群仍然停留在這些行動網路連線的地獄藉口上。

我想你已經明白我的意思了。像 jQuery 或 Prototype 這樣的大型整體庫肯定有其一席之地,但對於這個行動時代,我認為有一個更靈活的東西的位置。許多開發者似乎都同意我的觀點。


使庫跨瀏覽器工作的所有程式碼加起來

我沒有提到的另一個大問題是當代圖書館做了很多跨瀏覽器的事情。事實上,jQuery 的一大吸引力最初在於它如何抽像出前端開發人員必須解決的許多跨瀏覽器怪異問題。即使現在,jQuery 在底層做了很多繁重的工作,以確保在不同的瀏覽器中不會出現任何問題。

但是,如果您是只想迎合當代設備的開發人員,那麼我敢說,您真的需要這一切嗎?最簡潔的答案是不。透過刪除不必要的程式碼,您可以:

  • 由於瀏覽器需要解析的程式碼行更少,因此可以提高效能
  • 縮小檔案大小,這有助於頻寬受限的行動裝置。

您認為這個問題被誇大了嗎?這是來自 jQuery 原始碼的隨機程式碼區塊:

isPlainObject: function( obj ) {
		// Must be an Object.
		// Because of IE, we also have to check the presence of the constructor property.
		// Make sure that DOM nodes and window objects don't pass through, as well
		if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
			return false;
		}
....

或一些更深奧的東西:

// Perform a simple check to determine if the browser is capable of
// converting a NodeList to an array using builtin methods.
// Also verifies that the returned array holds DOM nodes
// (which is not the case in the Blackberry browser)
try {
	Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;

// Provide a fallback method if it does not work
} catch( e ) {
	// The intended fallback
}
....

這可能看起來相當微不足道,但請記住,這往往會增加。如果您只想針對現代瀏覽器(無論是桌上型電腦還是行動裝置),那麼就沒有必要進行所有這些額外的檢查和駭客攻擊。透過減少您想要的瀏覽器,您可以在頻寬和效能上雙贏!


Zepto 的交易是什麼?

我聽到你們說「累積夠了!已經告訴我們關於該死的圖書館了!」。那麼就讓我們開始吧。

Zepto,如標題所示,它是一個移動 JavaScript 框架,可以修正上述兩個問題。它的程式碼庫非常小,重量約 8kb。

它透過大部分刪除跨瀏覽器的內容而變得如此簡潔。當它創建時,主要關注點是僅支援 Webkit。準確地說是Webkit 的行動版本。現在,它已經擴展到可以與桌面瀏覽器一起使用——但僅限於現代瀏覽器。在這個 IE6 中,不再需要笨手笨腳地讓事情正常運作!

Zepto 的 API 與 jQuery 相容。如果您使用 jQuery,您就已經知道如何使用 Zepto。

Zepto 設法做到小型化的另一個領域是它如何避免功能膨脹。核心庫似乎不包含任何無關的功能。如果需要的話,甚至 AJAX 和動畫功能也可以作為單獨的模組提供。對於主要使用庫進行 DOM 遍歷和操作的用戶來說,這絕對是天賜之物。

哦,我有沒有提到 Zepto 的主要派對作品? Zepto 的 API 與 jQuery 相容。如果您使用 jQuery,您就已經知道如何使用 Zepto。


Zepto 和 jQuery 可以互換嗎?

是和否。取決於是一個更恰當的答案。

是的,因為Zepto的核心API在很大程度上模仿了jQuery。為了使其易於使用並顯著縮短學習曲線,Zepto 模擬了 jQuery 的 API。大多數常用方法(例如 DOM 操作)的名稱幾乎相同,並且具有相同順序的相同參數。對於工程師來說,方法簽名是相同的。

讓我們來看一個小例子:

$('#element').html("Hey! Are you on the GW2 beta?");

看起来很眼熟吗?它应该。这与您使用 jQuery 来更改元素的 HTML 的代码完全相同。正如我所提到的,这不仅限于此方法。大多数 DOM 操作都是以与您的实用程序相同的方式构建的,例如 AJAX。

另一方面,API 并非 100% 匹配。 Zepto 放弃了 jQuery 中存在的一些可能破坏代码的方法。同样重要的是,由于 Zepto 是 jQuery 的子集,因此您可能会错过内置的特定功能—— Deferred 就是一个很好的例子。您根本无法将 jQuery 替换为 Zepto 并期望一切正常。

对我来说,最大的障碍是从 jQuery 复制的方法,但具有不同的签名和功能集。当你认为自己使用了正确的方法但事实并非如此时,你会感到有点沮丧。克隆方法复制事件处理程序的能力就是一个很好的例子。如果不查看源代码,我真的不会发现这一点。


探索核心 API

如果您以前使用过 jQuery,那么下面的所有内容都应该是一场小憩。

闲聊已经够多了,现在让我们深入研究一些代码。与许多现代库一样,DOM 遍历和操作是每个人都希望完善的核心功能。由于 API 和整体功能与 jQuery 非常相似,我认为您可以放心地假设一切都是一流的。

让我们看一下一些常见的 DOM 相关功能。

修改容器的 HTML 内容

这是 DOM 操作的基础:读取或更改元素的 HTML 内容。使用 Zepto,就像在容器上调用 html 方法一样简单,并在需要时传入新的 HTML。

例如,这会获取元素的 HTML 并将其存储在变量中。

var containerText = $('#element').html();

或者如果您想将其更改为其他内容:

$('#element').html("Hola there!");

很简单,对吧?

将元素添加到容器中

与 jQuery 一样,Zepto 使用 appendprepend 方法。并且调用也保持不变。

$('#element').append("<p>This is the appended element.</p>");

// or

$('#element').prepend("<p>This is the appended element.</p>");

活动

事件是任何现代应用程序的支柱,Zepto 为您提供了一系列易于使用的方法来完成您的工作。大部分工作是通过 on 方法完成的。

$('#element').on('click', function(e){ 
   // Your code here
});

易于阅读且易于解析。如果您感觉老派并且想使用 bind、delegatelive 方法,请不要这样做。就像 jQuery 一样,它们在这里已被弃用。

AJAX

任何现代低级库都需要提供一个易于使用的 AJAX 包装器,而 Zepto 不会让您失望。这是一个超级简单的 AJAX 请求的示例。


$.ajax({
  type: 'POST',
  url: '/project',
  data: { name: 'Super Volcano Lair' },
  dataType: 'json',
  success: function(data){
    // Do some nice stuff here
  },
  error: function(xhr, type){
    alert('Y U NO WORK?')
  }
});

事情可能看起来有点复杂,但我们正在做的事情可以归结为:

  • 创建 AJAX 对象并向其传递选项。
  • 在选项中,指定我们想要执行 POST 请求。我想默认是 GET。
  • 指定要发布到的 URL。
  • 指定需要发送到服务器的数据。正如你所看到的,我正在疯狂地大笑,并试图创建我自己的超级恶棍巢穴。
  • 指定请求成功或失败时将触发的方法。这样,无论发生什么情况,我们都可以更新 UI。

与 jQuery 一样,有单独的方法用于 GET 或 POST 请求,或者仅加载一些 Web 内容。

动画

如果没有一些动画,世界将会变成什么样子? Zepto 公开了全能的 animate 方法,该方法应该可以处理大多数您的动画需求。

$('#element').animate({
  opacity: 0.50, top: '30px', color: '#656565'
}, 0.5)

我们基本上是选择要动画的元素,调用 animate 方法并指定要动画的属性以及完成动画所需的时间。 Zepto 会完成剩下的工作。

或者,如果您只需要显示和隐藏一个元素,则切换应该可以正常工作。

我想您明白了——Zepto 的 DOM、动画和事件 API 在很大程度上模拟了 jQuery。众所周知,jQuery 在这些方面非常擅长。如果您以前使用过 jQuery,那么您在这里应该不会遇到太多麻烦。


了解触摸事件和其他细节

Zepto 确实为您提供了一些可以在应用程序中利用的触摸特定事件。其中包括:

  • 滑动——处理典型的滑动动作。不同方向也有单独的事件,例如 swipeLeft
  • tap -- 响应通用点击操作而触发。
  • doubleTap——显然,这可以处理双击。
  • longTap -- 当元素被点击超过 750 毫秒时触发。不过,改变这种延迟似乎并不容易。

这是一个简单的示例,取自 Zepto 的文档。

<ul id=items>
  <li>List item 1 <span class=delete>DELETE</span></li>
  <li>List item 2 <span class=delete>DELETE</span></li>
</ul>

<script>
// show delete buttons on swipe
$('#items li').swipe(function(){
  $('.delete').hide()
  $('.delete', this).show()
})

// delete row on tapping delete button
$('.delete').tap(function(){
  $(this).parent('li').remove()
})
</script>

当列表项被扫描时,所有其他列表元素的删除按钮都会隐藏,只显示当前的删除按钮。点击删除按钮会删除该按钮的父 li 项目,从而从 DOM 中删除。

這應該與您通常處理事件的方式非常相似,除了您將處理程序綁定到不同的事件,僅此而已。


總結

考慮到我開發的目的和對象,這對我來說是完美的;但一如既往,您的里程可能會有所不同。

嗯,這幾乎就是 Zepto 的全部內容了。從本質上講,它是一個精簡、免費的 jQuery 版本,可以在行動裝置上使用。隨著時間的推移,它已經演變成一個精簡的庫,不再支援過時的瀏覽器。

考慮到我開發的目的和對象,這對我來說是完美的;但一如既往,您的里程可能會有所不同。您可能會陷入使用 jQuery 插件的困境,這些插件需要進行重大修改才能使其在 Zepto 下工作,或者只是對 jQuery 更有信心。

無論哪種方式,您確實需要在取消之前嘗試 Zepto,看看它如何適合您的工作流程。我做到了並且我喜歡它!

好了,這就是我今天的全部內容。請在下面的評論中告訴我您的想法,非常感謝您的閱讀!

以上是Zepto.js:揭開不可或缺的元素的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JavaScript,C和瀏覽器之間的關係JavaScript,C和瀏覽器之間的關係May 01, 2025 am 12:06 AM

引言我知道你可能會覺得奇怪,JavaScript、C 和瀏覽器之間到底有什麼關係?它們之間看似毫無關聯,但實際上,它們在現代網絡開發中扮演著非常重要的角色。今天我們就來深入探討一下這三者之間的緊密聯繫。通過這篇文章,你將了解到JavaScript如何在瀏覽器中運行,C 在瀏覽器引擎中的作用,以及它們如何共同推動網頁的渲染和交互。 JavaScript與瀏覽器的關係我們都知道,JavaScript是前端開發的核心語言,它直接在瀏覽器中運行,讓網頁變得生動有趣。你是否曾經想過,為什麼JavaScr

node.js流帶打字稿node.js流帶打字稿Apr 30, 2025 am 08:22 AM

Node.js擅長於高效I/O,這在很大程度上要歸功於流。 流媒體匯總處理數據,避免內存過載 - 大型文件,網絡任務和實時應用程序的理想。將流與打字稿的類型安全結合起來創建POWE

Python vs. JavaScript:性能和效率注意事項Python vs. JavaScript:性能和效率注意事項Apr 30, 2025 am 12:08 AM

Python和JavaScript在性能和效率方面的差異主要體現在:1)Python作為解釋型語言,運行速度較慢,但開發效率高,適合快速原型開發;2)JavaScript在瀏覽器中受限於單線程,但在Node.js中可利用多線程和異步I/O提升性能,兩者在實際項目中各有優勢。

JavaScript的起源:探索其實施語言JavaScript的起源:探索其實施語言Apr 29, 2025 am 12:51 AM

JavaScript起源於1995年,由布蘭登·艾克創造,實現語言為C語言。 1.C語言為JavaScript提供了高性能和系統級編程能力。 2.JavaScript的內存管理和性能優化依賴於C語言。 3.C語言的跨平台特性幫助JavaScript在不同操作系統上高效運行。

幕後:什麼語言能力JavaScript?幕後:什麼語言能力JavaScript?Apr 28, 2025 am 12:01 AM

JavaScript在瀏覽器和Node.js環境中運行,依賴JavaScript引擎解析和執行代碼。 1)解析階段生成抽象語法樹(AST);2)編譯階段將AST轉換為字節碼或機器碼;3)執行階段執行編譯後的代碼。

Python和JavaScript的未來:趨勢和預測Python和JavaScript的未來:趨勢和預測Apr 27, 2025 am 12:21 AM

Python和JavaScript的未來趨勢包括:1.Python將鞏固在科學計算和AI領域的地位,2.JavaScript將推動Web技術發展,3.跨平台開發將成為熱門,4.性能優化將是重點。兩者都將繼續在各自領域擴展應用場景,並在性能上有更多突破。

Python vs. JavaScript:開發環境和工具Python vs. JavaScript:開發環境和工具Apr 26, 2025 am 12:09 AM

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

JavaScript是用C編寫的嗎?檢查證據JavaScript是用C編寫的嗎?檢查證據Apr 25, 2025 am 12:15 AM

是的,JavaScript的引擎核心是用C語言編寫的。 1)C語言提供了高效性能和底層控制,適合JavaScript引擎的開發。 2)以V8引擎為例,其核心用C 編寫,結合了C的效率和麵向對象特性。 3)JavaScript引擎的工作原理包括解析、編譯和執行,C語言在這些過程中發揮關鍵作用。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器