移动开发流量省起来之Zepto

博主热衷各种互联网技术,常啰嗦,时常伴有强迫症,常更新,觉得文章对你有帮助的可以关注我。 转载请注明"深蓝的镰刀"



事情是这样的:最近开发的一个手机网站客户反应访问起来特别慢,刷了半天才能看到页面,然后问我们是不是网站出问题了。于是我赶紧找了各种手机测试一下,没有问题,首先排除程序错误的问题,然后服务器用的又是云服务器,只要不是在国外应该不会太慢才对,打听了一下,原来是该客户用的是2G网络访问的,说是在信号不好的地方几乎刷不出页面。。。

虽然说客户的网络质量令人堪忧,不过作为一个有点追求(强迫症)的攻城狮还是决定帮他优化一下。

页面另存为,打开一个页面所需要加载的所有资源包括图片、js、html一共才300K(jquery库特地使用了压缩版的,只有100K左右。。。),将图片各种压缩,最终还是有160多K,看来只有把jquery库给去了,但是将所有的jquery代码改写成原生js又有一种想死的感觉,而且很多兼容问题层出不穷,那么有没有一个既像jquery这么好用的,又能省流量的js库呢?答案是:Zepto

一张图说明Zepto.js的优势:

jquery 1.x最新版284KB,压缩后94KB;jquery2.x最新版247KB,压缩后84KB;Zepto最新版54KB,压缩后9KB!!!

然后看看功能方面。

选择器

1 <html><body>
2 <ul id="items">
3     <p>This is it!</p>
4 </ul>
5 <script src="./zepto1.1.6.js"></script>
6 <script>
7     alert($("#items").html());
8 </script>
9 </body></html>

追加

 1 <html><body>
 2 <ul id="items">
 3     <p>This is it!</p>
 4     <p>Hello</p>
 5 </ul>
 6 <script src="./zepto1.1.6.js"></script>
 7 <script>
 8     $(‘ul‘).append(‘<p>new list item</p>‘)
 9 </script>
10 </body></html>

克隆 (注:zepto的clone()方法不能像jquery的clone()可以同时克隆data和绑定事件)

 1 <html><body>
 2 <ul id="items">
 3     <p>This is it!</p>
 4     <p>Hello</p>
 5 </ul>
 6 <script src="./zepto1.1.6.js"></script>
 7 <script>
 8     $(‘ul‘).append($("#items").clone())
 9 </script>
10 </body></html>

ajax

 1 $.ajax({
 2   type: ‘GET‘,
 3   url: ‘/projects‘,
 4   data: { name: ‘Zepto.js‘ },
 5   dataType: ‘json‘,
 6   timeout: 300,
 7   context: $(‘body‘),
 8   success: function(data){
 9     this.append(data.project.html)
10   },
11   error: function(xhr, type){
12     alert(‘Ajax error!‘)
13   }
14 })
15
16 $.ajax({
17   type: ‘POST‘,
18   url: ‘/projects‘,
19   data: JSON.stringify({ name: ‘Zepto.js‘ }),
20   contentType: ‘application/json‘
21 })

因为Zepto是jQuery-compatible的,所有如果你会使用jquery,那么你已经会了Zepto。以上这些用法基本与jquery一致,下面说几个我看到的与jquery不同的地方。

1.Zepto基础库不支持很多css选择器

比如很常用的$(":selected"),$("p:eq(1)"),$("li:first")这类,不过Zepto的库提供很多拓展的模块,你只需要在他的官网上按需要编译你需要的模块然后保存为zepto.js即可,或者直接使用在线编译,其中如果开启了selector模块,你就能支持大部分的css选择器了。

2.如果你开启了detect模块,那么你就可以用Zepto判断用户设备、操作系统和浏览器的功能(测试了几个还算可以用,不知是否准确)

 1 <html><body>
 2 <ul id="items">
 3     <p>This is it!</p>
 4 </ul>
 5 <!-- 该js必须开启了detect模块 -->
 6 <script src="./zepto.js"></script>
 7 <script>
 8     // general device type
 9 alert($.os.phone);
10 alert($.os.tablet);
11
12 // specific OS
13 alert($.os.ios);
14 alert($.os.android);
15 alert($.os.webos);
16 alert($.os.blackberry);
17 alert($.os.bb10);
18 alert($.os.rimtabletos);
19
20 // specific device type
21 alert($.os.iphone);
22 alert($.os.ipad);
23 alert($.os.ipod); // [v1.1]
24 alert($.os.touchpad);
25 alert($.os.kindle);
26
27 // specific browser
28 alert($.browser.chrome);
29 alert($.browser.firefox);
30 alert($.browser.safari); // [v1.1]
31 alert($.browser.webview); // (iOS) [v1.1]
32 alert($.browser.silk);
33 alert($.browser.playbook);
34 alert($.browser.ie); // [v1.1]
35 </script>
36 </body></html>

3.如果开启了form模块,就可以对你的表单进行数据序列化,类似jquery的jquery form插件

 1 <html><body>
 2 <form>
 3 <input name="user" value="xxx" type="text"/>
 4 <input name="password" value="123" type="password"/>
 5 </form>
 6 <!-- 该js必须开启了form模块 -->
 7 <script src="./zepto.js"></script>
 8 <script>
 9  var formData = $(‘form‘).serializeArray();
10  alert(formData[0][‘name‘]);
11  alert(formData[1][‘name‘]);
12  alert(formData[0][‘value‘]);
13  alert(formData[1][‘value‘]);
14 </script>
15 </body></html>

4.如果开启了touch模块,你就可以使用tap(触屏点击) 和 swipe(触屏滑动),类似Jquery mobile 插件

 1 <html><body>
 2
 3 <style>
 4 .delete { display: none; }
 5 #items{font-size:30px;}</style>
 6
 7 <ul id="items">
 8   <li>List item 1 <span class="delete">DELETE</span></li>
 9   <li>List item 2 <span class="delete">DELETE</span></li>
10 </ul>
11
12 <!-- 该js必须开启了touch模块 -->
13 <script src="./zepto.js"></script>
14 <script>
15 $(‘#items li‘).swipe(function(){
16   $(‘.delete‘).hide()
17   $(‘.delete‘, this).show()
18 })
19
20 $(‘.delete‘).tap(function(){
21   $(this).parent(‘li‘).remove()
22 })
23 </script>
24 </body></html>

注:Zepto的swipe事件在某些Android手机(如安卓4.4)仍存在不起作用的情况。期待Zepto修复这个bug。

这么多有用的模块如果用jquery来实现,除了需要加载那个压缩后还有90多KB的核心库外,我还要加载各种插件诸如jquery mobile,jquery form,jquery detect等等,这个大小不用我说,要多臃肿多臃肿,而Zepto全部开启模块后只有39KB,所以说作为业绩良心省流量的手机网站还是使用Zepto吧。

总的来说,Zepto像是一个Jquery体系的一个精简版,专注于移动端,兼顾主流PC浏览器,对于Jquery库的文件大小问题我猜想Jquery在发展的同时可能因为很多历史遗留问题还有需要兼顾各种并不是主流的浏览器导致代码略臃肿。

时间: 2024-12-18 00:44:33

移动开发流量省起来之Zepto的相关文章

手机开发类型jquery的框架Zepto(API)

Zepto是一个轻量级的针对现代高级浏览器的JavaScript库, 它与jquery有着类似的api. 如果你会用jquery,那么你也会用zepto. http://www.html-5.cn/Manual/Zepto/ Echo.js – 简单易用的 JavaScript 图片延迟加载插件 http://www.cnblogs.com/lhb25/p/echo-js-image-lazy-loading-plugin.html jquery.template.js与Zepto结合 1 va

移动端开发:使用jQuery Mobile还是Zepto

原:http://blog.csdn.net/liubinwyzbt/article/details/51446771 jQuery Mobile和Zepto是移动端的js库.jQuery Mobile相当于PC端的jQuery UI,它提供了很多页面的UI库,能够很快的开发出漂亮的界面,适合公司没有UI设计师的前端开发人员来进行移动端的开发.Zepto相当于PC端的jQuery,它提供了很多方法和功能,能够很快的实现各种需求和功能,适合公司有UI设计师的前端开发人员来进行移动端的开发. jQu

zepto源码学习-01-整体感知

在公司一直做移动端的项目,偶尔会做点PC端的东西,但基本上都是和移动端打交道,移动端嘛必须上zepto. 简单介绍下Zepto,它是一个面向高级浏览器的JavaScript框架的,实现JQuery的大部分API,尤其针对手机上web开发(流量金贵,JQ又太重了,体积太大,考虑太多性能不好),因此选择Zepto.js一个非常不错的选择!纵观各大网站选用zepto的特别多. 做移动端为了让页面更轻巧,大多都是自己写原生代码,遇到难题,我一般都是去看zepto的实现,把其中的一些搬到自己代码中,久而久

使用MVVM框架(avalonJS)快速开发运营活动

背景 在运营活动开发中,因为工作的重复性很大,同时往往开发时间短,某些情况下也会非常紧急,导致了活动开发时间被大大压缩,同时有些活动逻辑复杂,数据或者状态变更都需要手动渲染,容易出错,正是因为这些问题的存在,所以才有了MV*框架的诞生,比如大名鼎鼎的angularJS.今天就跟大家讲讲国产的MVVM框架avalonJS是如何快速进行开发的,同时大家也可以对比石器时代的开发模式(jquery或者zepto)与mv*模式的区别. avalonJS简介 avalonJS是前端大牛司徒正美开发和维护的m

海量数据挖掘之中移动流量运营系统

--------------------------------------------------------------------------------------------------------------- [版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/51691862 作者:朱培   ID:sdksdk0 -------------------------------------

android app 流量统计

https://blog.csdn.net/yzy9508/article/details/48300265 | android 数据流量统计 - CSDN博客https://blog.csdn.net/forlong401/article/details/8440160 | android如何开发流量监控软件 - CSDN博客https://stackoverflow.com/questions/12613402/android-statistic-3g-traffic-for-each-ap

我的前端故事----轮盘转起来(+﹏+)~

转眼间,马上又到了中秋了,忽然想到了有到了做活动的日子了~每逢佳节必活动的传统一直是我们前端的职责所在,去年我介绍了游戏机,大富翁,那今年的活动就来个轮盘开奖吧~其实这个东西在 pc 端上已经烂大街了,无数的 demo,插件可以帮助我们实现这个功能,所以我也就随大流的去找了个知名的 jQuery 插件去实现这个功能,可惜我做的是移动端的开发...平时基本都是原生 javaScript 做开发,顶多上一个 zepto,为了这个功能上一个 jQuery 总觉得不是那么地道,不过现在的jquery压缩

移动web

1. 移动web与电脑端web1.1 两者布局的区别1.1.1 电脑端web在做电脑端页面布局时,给页面设置的常为固定的长和宽,为的是页面不会因为不同分辨率和不同浏览器发生页面布局的错位.现在我们也能通过给父盒子设置display:flex;来实现弹性布局,可以通过只对父盒子设置宽高,实现盒子内部的布局不会因为浏览器大小而发生布局改变.1.1.2 移动web移动web的开发就和电脑端有着明显的区别,原因移动端的可视区域大小明显比电脑端小,并且可视区域的大小有许多种类,无法固定一种大小来设置页面,

构建通过 Database.com 提供技术支持的 PhoneGap 应用程序

要求 其他必要产品 Database.com account 用户级别 全部 必需产品 PhoneGap Build 范例文件 Database.Com-PhoneGap-Sample 在这篇文章中,我们将探究使用 PhoneGap 构建的移动应用程序的创建过程,所有数据 均通过 Database.com 提供并保存.在深入探讨技术细节之前,我们先来回顾一下相关术语. PhoneGap PhoneGap 是一种免费的开放源码技术,旨在使开发人员使用基于 Web 的传统技术,创建能够在多个平台上进