移动开发流量省起来之Zepto

2024-03-17 06:48

本文主要是介绍移动开发流量省起来之Zepto,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

移动开发流量省起来之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!!!

然后看看功能方面。

选择器

 <html><body><ul id="items"><p>This is it!</p></ul><script src="http://www.cnphp6.com/archives/zepto1.1.6.js"></script><script>alert($("#items").html());</script></body></html>

追加

 <html><body><ul id="items"><p>This is it!</p><p>Hello</p></ul><script src="http://www.cnphp6.com/archives/zepto1.1.6.js"></script><script>$('ul').append('<p>new list item</p>')   </script></body></html>

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

 <html><body><ul id="items"><p>This is it!</p><p>Hello</p></ul><script src="http://www.cnphp6.com/archives/zepto1.1.6.js"></script><script>$('ul').append($("#items").clone())   </script></body></html>

ajax

 $.ajax({type: 'GET',url: '/projects',data: { name: 'Zepto.js' },dataType: 'json',timeout: 300,context: $('body'),success: function(data){this.append(data.project.html)},error: function(xhr, type){alert('Ajax error!')}})$.ajax({type: 'POST',url: '/projects',data: JSON.stringify({ name: 'Zepto.js' }),contentType: 'application/json'})

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

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

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

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

<html><body><ul id="items"><p>This is it!</p></ul><!-- 该js必须开启了detect模块 --><script src="http://www.cnphp6.com/archives/zepto.js"></script><script>// general device typealert($.os.phone);alert($.os.tablet);// specific OSalert($.os.ios);alert($.os.android);alert($.os.webos);alert($.os.blackberry);alert($.os.bb10);alert($.os.rimtabletos);// specific device typealert($.os.iphone);alert($.os.ipad);alert($.os.ipod); // [v1.1]alert($.os.touchpad);alert($.os.kindle);// specific browseralert($.browser.chrome);alert($.browser.firefox);alert($.browser.safari); // [v1.1]alert($.browser.webview); // (iOS) [v1.1]alert($.browser.silk);alert($.browser.playbook);alert($.browser.ie); // [v1.1]</script></body></html>

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

<html><body><form><input name="user" value="xxx" type="text"/><input name="password" value="123" type="password"/></form><!-- 该js必须开启了form模块 --><script src="http://www.cnphp6.com/archives/zepto.js"></script><script>var formData = $('form').serializeArray();alert(formData[0]['name']);alert(formData[1]['name']);alert(formData[0]['value']);alert(formData[1]['value']);</script></body></html>

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

<html><body><style>.delete { display: none; }#items{font-size:30px;}</style><ul id="items"><li>List item 1 <span class="delete">DELETE</span></li><li>List item 2 <span class="delete">DELETE</span></li></ul><!-- 该js必须开启了touch模块 --><script src="http://www.cnphp6.com/archives/zepto.js"></script><script>$('#items li').swipe(function(){$('.delete').hide()$('.delete', this).show()})$('.delete').tap(function(){$(this).parent('li').remove()})</script></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在发展的同时可能因为很多历史遗留问题还有需要兼顾各种并不是主流的浏览器导致代码略臃肿。

这篇关于移动开发流量省起来之Zepto的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/818148

相关文章

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

使用zabbix进行监控网络设备流量

《使用zabbix进行监控网络设备流量》这篇文章主要为大家详细介绍了如何使用zabbix进行监控网络设备流量,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装zabbix配置ENSP环境配置zabbix实行监控交换机测试一台liunx服务器,这里使用的为Ubuntu22.04(

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD