0

0

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

王林

王林

发布时间:2023-08-29 23:49:02

|

926人浏览过

|

来源于php中文网

原创

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 相关功能。

网奇.NET商城系统
网奇.NET商城系统

网奇Eshop商城购物系统:集成国内优秀商城系统的成功元素,采用ASP.NET2.0语言设计开发.傻瓜式的管理模式,强大的后台管理,可添加或定制风格精美的模板,网站广告位任意添加,集成在线支付接口,内置简、繁、英三种语言.系统不断升级,力求尽善尽美.网奇商城的目标是:打造国内最到的商城系统! 升级功能:1.在线备份SQL数据库2.RSS在线订阅器3.整合了支付宝鲜花支付接口。4.整合了网奇E客通在

下载

修改容器的 HTML 内容

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

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

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

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

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

很简单,对吧?

将元素添加到容器中

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

$('#element').append("

This is the appended element.

"); // or $('#element').prepend("

This is the appended element.

");

活动

事件是任何现代应用程序的支柱,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 的文档。

  • List item 1 DELETE
  • List item 2 DELETE

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

这应该与您通常处理事件的方式非常相似,除了您将处理程序绑定到不同的事件,仅此而已。


总结

考虑到我开发的目的和对象,这对我来说是完美的;但一如既往,您的里程可能会有所不同。

嗯,这几乎就是 Zepto 的全部内容了。从本质上讲,它是一个精简、免费的 jQuery 版本,可以在移动设备上使用。随着时间的推移,它已经演变成一个精简的库,不再支持过时的浏览器。

考虑到我开发的目的和对象,这对我来说是完美的;但一如既往,您的里程可能会有所不同。您可能会陷入使用 jQuery 插件的困境,这些插件需要进行重大修改才能使其在 Zepto 下工作,或者只是对 jQuery 更有信心。

无论哪种方式,您确实需要在取消之前尝试一下 Zepto,看看它如何适合您的工作流程。我做到了并且我喜欢它!

好了,这就是我今天的全部内容。请在下面的评论中告诉我您的想法,非常感谢您的阅读!

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

10

2026.01.27

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

109

2026.01.26

edge浏览器怎样设置主页 edge浏览器自定义设置教程
edge浏览器怎样设置主页 edge浏览器自定义设置教程

在Edge浏览器中设置主页,请依次点击右上角“...”图标 > 设置 > 开始、主页和新建标签页。在“Microsoft Edge 启动时”选择“打开以下页面”,点击“添加新页面”并输入网址。若要使用主页按钮,需在“外观”设置中开启“显示主页按钮”并设定网址。

16

2026.01.26

苹果官方查询网站 苹果手机正品激活查询入口
苹果官方查询网站 苹果手机正品激活查询入口

苹果官方查询网站主要通过 checkcoverage.apple.com/cn/zh/ 进行,可用于查询序列号(SN)对应的保修状态、激活日期及技术支持服务。此外,查找丢失设备请使用 iCloud.com/find,购买信息与物流可访问 Apple (中国大陆) 订单状态页面。

136

2026.01.26

npd人格什么意思 npd人格有什么特征
npd人格什么意思 npd人格有什么特征

NPD(Narcissistic Personality Disorder)即自恋型人格障碍,是一种心理健康问题,特点是极度夸大自我重要性、需要过度赞美与关注,同时极度缺乏共情能力,背后常掩藏着低自尊和不安全感,影响人际关系、工作和生活,通常在青少年时期开始显现,需由专业人士诊断。

7

2026.01.26

windows安全中心怎么关闭 windows安全中心怎么执行操作
windows安全中心怎么关闭 windows安全中心怎么执行操作

关闭Windows安全中心(Windows Defender)可通过系统设置暂时关闭,或使用组策略/注册表永久关闭。最简单的方法是:进入设置 > 隐私和安全性 > Windows安全中心 > 病毒和威胁防护 > 管理设置,将实时保护等选项关闭。

6

2026.01.26

2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】
2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】

铁路12306提供起售时间查询、起售提醒、购票预填、候补购票及误购限时免费退票五项服务,并强调官方渠道唯一性与信息安全。

122

2026.01.26

个人所得税税率表2026 个人所得税率最新税率表
个人所得税税率表2026 个人所得税率最新税率表

以工资薪金所得为例,应纳税额 = 应纳税所得额 × 税率 - 速算扣除数。应纳税所得额 = 月度收入 - 5000 元 - 专项扣除 - 专项附加扣除 - 依法确定的其他扣除。假设某员工月工资 10000 元,专项扣除 1000 元,专项附加扣除 2000 元,当月应纳税所得额为 10000 - 5000 - 1000 - 2000 = 2000 元,对应税率为 3%,速算扣除数为 0,则当月应纳税额为 2000×3% = 60 元。

35

2026.01.26

oppo云服务官网登录入口 oppo云服务登录手机版
oppo云服务官网登录入口 oppo云服务登录手机版

oppo云服务https://cloud.oppo.com/可以在云端安全存储您的照片、视频、联系人、便签等重要数据。当您的手机数据意外丢失或者需要更换手机时,可以随时将这些存储在云端的数据快速恢复到手机中。

121

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号