别再迷信 zepto 了
希望网上公开课的老师们不要再讲移动端网页用zepto了,坑了无数鸟啊 ~~~。
1、自己/公司/项目组所写和所积累(网上下的)的js函数都是以jQuery插件的写法来写的,如果要换到zepto上的话那么每个都要改一点。而且通常都是要同时做PC端和手机端,PC端无疑是要用jQuery,如果手机端用zepto,就会产生两份js插件库,大大增加了维护成本和难度。
2、有一部分实用的API被裁剪了,让编程变得困难,本来一句话搞定的事,要自己多写几句才能搞定,一开始还不知道是怎么报的错。
3、虽然zepto比jQuery小,但其实文件的大小只在第一次打开该网站时有影响,后面都是使用304本地缓存无需重新下载,文件大小的区别已经没影响了。就算是第一次下载,移动端不需要IE可以使用jQuery2以上版本,况且现在网站都用GZip压缩,30K左右的大小也能接受吧。
4、有一个网站对这几个库进行性能测试,结果是jQuery比zepto的执行效率要高,这就让我怀疑zepto的水平了,明明是裁剪的、为移动优化的但性能却更差。性能测试网站链接>>(说明:这个测试网站中,得出的数值越大说明效率越高性能越好,红色底为效率最低,绿色底为效率最高,我截图只截了最常用的两个写法的效率,苹果和安卓的也测了都是zepto的比jQuery的低,约为60%)
Chrome下:
Firefox下:
5、一个在核心领域核心功能上没有足够优势的库,它作者的水平是否值得信赖?它还会为以后埋下多少坑?
6、理论上说zepto的tap事件会比click事件少了那300毫秒的延迟,但一般手机端的点击事件基本都要Ajax请求或者跳转页面,相比网络请求的延迟来说这300毫秒微不足道。而且jQuery也有相应的插件。反正在实际使用中并没有感到那传说中300毫秒的不顺畅。最近了解到说安卓4.1以上meta标签设置禁止缩放就可以让浏览器禁用300ms的延时了。
7、zepto使用touch相关的事件模拟出tap、longTap等事件,目的为解决click事件的300ms 延时,但有个很大的问题是tap事件会“穿透”,“穿透”又会导致一系列问题。业内有个办法是使用一个fastclick的库,用回click事件。>>更多关于fastclick和300ms延时
8、如果一些插件需要jQuery而并不适应zepto,但项目主要用zepto,那么就很可能会引入了两个库。很多事件没处理好的话就会触发两次,大大增加了填坑复杂度,而不是花精力去关注真正的业务逻辑。
9、网上还有zepto各种小BUG的解决小技巧和方案 >>比如这里。但是我认为,一个优秀的框架应该是帮助开发人员减少重复工作的,而不是埋下一堆堆莫名其妙的问题,让开发者纠结了又纠结,找了又找,引入一堆本来并不需要的库/插件,让管理变得更复杂。另外,多个分散小文件的下载比一个稍大的文件还要耗时(参考CSS Sprite)。
有些东西就是昙花一现,开始看起来很惊艳,但实际用起来到处是坑。zepto,也只是昙花一现而已,或许根本就不是一支昙花而是一朵奇葩。
别再迷信 zepto 了的更多相关文章
- zepto和jquery的区别,zepto的不同使用8条小结
说到诡异事件发生的原因,自然是想到两者之间的差异性. 首先是效果: jquery中有fadeIn和fadeOut两个效果,用来实现渐隐渐显的效果,这个在PC端自然是常用的效果.然后我们前端组的组员Mr ...
- (jQuery||Zepto).extend 的一个小问题
最近一直在搞移动端,也由于自己对jQuery比较熟悉,再加上Zepto提供了跟jQuery一样的API,所以就选择了Zepto作为开发框架. 由于是移动端开发,所以也应用了一些ES5新增的API,比如 ...
- Zepto核心模块源代码分析
一.Zepto核心模块架构 Zepto核心模块架构图 该图展示了Zepto核心模块架构代码的组织方式.主要分为私有变量.函数和暴露给用户的所有api. Zepto核心模块架构代码 该图展示了Zepto ...
- lua、groovy嵌入到java中的性能对比(转)
lua和groovy都是可以嵌入到java中的脚本语言.lua以高性能著称,与C/C++在游戏开放中有较多使用,groovy是一个基于Java虚拟机(JVM)的敏捷动态语言,在jvm下有着不错的性能. ...
- 移动端web开发中对点透的处理,以及理解fastclick如何做到去除300ms延迟
一.点透问题以及处理办法 开发中遇到一个问题,就是点击layer弹出框的取消按钮之后,按钮下方的click事件就直接触发了.直接看代码: $('.swiper-slide').on('click', ...
- 【JS】类型检测
本文首发于我的个人博客 : http://cherryblog.site/ 前言 js 中的类型检测也是很重要的一部分,所以说这篇文章我们就来讲一下怎么对 JavaScript 中的基本数据类型进行检 ...
- zepto/jQuery、AngularJS、React、Nuclear的演化
写在前面 因为zepto.jQuery2.x.x和Nuclear都是为现代浏览器而出现,不兼容IE8,适合现代浏览器的web开发或者移动web/hybrid开发.每个框架类库被大量用户大规模使用都说明 ...
- JavaScript事件详解-Zepto的事件实现(二)【新增fastclick阅读笔记】
正文 作者打字速度实在不咋地,源码部分就用图片代替了,都是截图,本文讲解的Zepto版本是1.2.0,在该版本中的event模块与1.1.6基本一致.此文的fastclick理解上在看过博客园各个大神 ...
- jquery和zepto的扩展方法extend
jquery和zepto的扩展方法extend 总结下jQuery(3.1.1)和zepto(1.1.6)到底是如何来开放接口,使之可以进行扩展,两者都会有类型判断,本文使用简单的类型判断,暂不考虑兼 ...
随机推荐
- ThreadLocal源码分析
1.概述 ThreadLocal,可以理解为线程的局部变量,作用就是为每一个使用该变量的线程都提供一个变量值的副本,每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突. ThreadLo ...
- jstree静态生成树并为树添加触发事件
本章将介绍如何简单的使用jstree生成树(生成树的数据是静态的),并为树添加点击事件. 1. 建一个jsp页面,引入jquery.js(在其他js前引用),引入jstree所需的js,css文件(可 ...
- u盘安装CENTOS后,启动missing operating system ,只能用U盘才能启动系统
好久之前就想把家里闲置的那台老的不能再老的笔记本换成linux的,用来学习 从N久之前用光盘安装的时候发现光驱坏掉了之后就没有再装过,最近又想安装于是就试了U盘安装 U盘安装过程也很简单,只需要制作一 ...
- C#语言基础——结构体和枚举类型
结构体和枚举类型 一.结构体(struct) 结构类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数.常数.字段.方法.属性.索引器.运算符.事件和嵌套类型的值类型.结构在几个重要 ...
- mysql-mmm 安装配置(双主)
原文地址:mysql-mmm 安装配置 作者:chinaunix1116 MMM即Master-Master Replication Managerfor MySQL(mysql主主复制管理器)关于m ...
- Jetty 发布web服务
Jetty provides a Web server and javax.servlet container, plus support for HTTP/2, WebSocket, OSGi, J ...
- 简单阐述下Ajax以get方式请求的步骤 初学,不对的话,跟我说下,谢谢!
首先, 在GET提交中"=,&"等字符与请求字符串的关键字相混淆.所以: 第一步,先对get提交过来的数据进行编码. 第二步,实例化ajax对象. 第三步,创建对服务器的连 ...
- Redis基本配置
# redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => 1000 bytes # 1kb ...
- MongoDB3.0.x版本用户授权配置(单机环境)
MongoDB数据库默认情况下是没有做权限控制的,只要能够连接所开放的端口就能进行访问,而且拥有root级别的权限:对于生产环境而言是极不安全的,所以需要建立用户,进行授权控制. 单机环境下的用户授权 ...
- Java api 入门教程 之 JAVA的文件操作
I/O类使用 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择.因为文件是一种常见的数据源,而且读写文件也是程序员进行IO编程的一个基本 ...