Jquery之美中不足小结


Posted in Javascript onFebruary 16, 2011

是的,jquery成功挖掘selector、链式用法、gsetter用法、很多精简命名,等等,让前端变得轻松简单,为Web开发作出巨大贡献。
不过,它也有一些不尽人意的地方。

1。关于代码坨之一。

一直觉得jquery是个个人英雄主义的产物,有耐心看完他代码的,绝对少于百分之一。
sizzle独立出来后,ms有些改观。
可一坨一坨并且相互牵连的风格,还是在sizzle与jquery到处都是。
有时想:John如果不写代码了,谁会愿意来接手这些坨坨。

2。关于代码坨之二。

不知有没有组件开发者想过“依赖jquery开发出一个能不依赖jquery而独立运行的组件”?
这是奇怪的需求吗?----好像不是。
有这样的需求吗?----很多同学会说:“jquery已经树大根深好乘凉可依赖,为什么还要独立运行。”
也是,组件开发者的水平一般都还不错,他们会想办法解决这些问题的。如果有这样的需要,他们会去找到对应的方法库的。
不过,这也说明了,jquery不能满足这些人的需求。
因为jquery就是个代码坨。想拆成静态方法库,那几乎是不可能的。

3。关于“专注于dom”之一。

不知道该说好,还是该说不好。
觉得jquery的团队,绝对有能力做一个全面的框架,而不只是停在“专注于dom”这一点上。
使用jquery与jquery组件,我们可能还得自己去找个种子文件,来作异步加载等。
因为这些的种子需求,其实是跟dom没啥紧密关系的,所以jquery可以完全不顾-----倒是很会偷懒啊。
另,关于种子文件,YUI3把use当核心点是个不错的创意,可惜发挥得有点太过。到YUI3后,我想只用他的selector来作个性能比对,竟然要加载一推文件才能做到。

4。关于“专注于dom”之二。
“jquery专注于dom”,
那字符串的trim,需要在jquery里吗?----貌似没必要吧。不过jquery顺手提供了。类似的还有parseJSON、globalEval等。
那字符串模板功能(tmpl)呢?----模板明显是应该基于字符串的,因为字符串模板常用来组织html字符,所以,jquery会把它牵强的放进来。并且是基于dom的。----我实在想说:真的很牵强。
我们在项目中,可能还会用到很多跟字符串有关的功能(trim|subByte|encode4Hhtml等)、跟object有关的功能(get|dump|mix等)、跟数组有关的功能(forEach|map),等等。
这些问题,jquery都没有帮我们解决的意思,那我们是不是都得再另请高明或自已解决?

5。关于sizzle。
A:有时候觉得sizzle是个半成品,一些本来可以顺手提供的功能,却没提供出来。
例如:
selector2filter(selector) //把一个selector转化成一个过滤函数。
filter(els,selector,refEl) //以ref为参考元素,按selector条件过滤els。例如,在delegate时会用到。由于sizzle没提供,导致$('#id').delegate('>li','click',handle)中的'>li'的参考元素不是#id对应的对象
B:sizzle如果想解决以下这两个问题,可能得伤筋动骨了。

<h1 id="head1">主题</h1> 
<ul><li>明细1.1</li><li>明细1.2</li></ul> 
<ul><li>明细2.1</li><li>明细2.2</li></ul> 
<script> 
alert($('#head1~ul>li').length);//应该是4而不是0。因为sizzle在取候选集时偷懒了,没有认真的处理候选集问题 
</script>

<ul> 
<li> 
<div> 
<div> 
<span>需要的</span> 
</div> 
</div> 
</li> 
<li> 
<h1> 
<div> 
<span>不需要的</span> 
</div> 
</h1> 
</li> 
</ul> 
<script> 
alert($('li>div span').length); //应该是1,而不是0。因为sizzle在过滤时偷了懒,把回溯的情况给忽略了。 
</script>

C:一点小想法,Sizzle的代码有点多。YUI后有13K之多,去掉他额外加的几个简写,也还有11K多。

6。。。。
说累了,以后再说。

Javascript 相关文章推荐
$.format,jquery.format 使用说明
Jul 13 Javascript
javascript获取系统当前时间的方法
Nov 19 Javascript
AngularJs 60分钟入门基础教程
Apr 03 Javascript
非常酷炫的Bootstrap图片轮播动画
May 27 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
Aug 03 Javascript
JS生成一维码(条形码)功能示例
Jan 19 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
Apr 04 jQuery
Js中async/await的执行顺序详解
Sep 22 Javascript
js判断节假日实例代码
Dec 27 Javascript
JS实现字符串中去除指定子字符串方法分析
May 17 Javascript
apicloud拉起小程序并传递参数的方法示例
Nov 21 Javascript
Node.js API详解之 os模块用法实例分析
May 06 Javascript
jquery的index方法实现tab效果
Feb 16 #Javascript
jQuery ready函数滥用分析
Feb 16 #Javascript
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
Feb 14 #Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
Feb 14 #Javascript
JQuery 选择器、过滤器介绍
Feb 14 #Javascript
AJAX分页的代码(后台asp.net)
Feb 14 #Javascript
基于jquery的图片的切换(以数字的形式)
Feb 14 #Javascript
You might like
memcache一致性hash的php实现方法
2015/03/05 PHP
firebug的一个有趣现象介绍
2011/11/30 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
2014/12/29 Javascript
js鼠标悬浮出现遮罩层的方法
2015/01/28 Javascript
jQuery实现下拉加载功能实例代码
2016/04/01 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
基于JS实现的笛卡尔乘积之商品发布
2016/05/13 Javascript
jQuery拖拽通过八个点改变div大小
2020/11/29 Javascript
jQuery、zepto、js常用小技巧
2017/02/12 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
vue实现全选和反选功能
2017/08/31 Javascript
详解webpack require.ensure与require AMD的区别
2017/12/13 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
JavaScript如何把两个数组对象合并过程解析
2019/10/10 Javascript
Node.js API详解之 zlib模块用法分析
2020/05/19 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
javascript实现滚轮轮播图片
2020/12/13 Javascript
Python中实现对list做减法操作介绍
2015/01/09 Python
python3+PyQt5实现拖放功能
2018/04/24 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
python如何给字典的键对应的值为字典项的字典赋值
2019/07/05 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
python利用opencv实现颜色检测
2021/02/23 Python
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
迪奥官网:Dior.com
2018/12/04 全球购物
有个性的自我评价范文
2013/11/15 职场文书
培训主管的岗位职责
2013/11/23 职场文书
大学生村官心得体会范文
2014/01/04 职场文书
2015年师德师风自我评价范文
2015/03/05 职场文书
2015年劳动部工作总结
2015/05/23 职场文书
会计专业2019暑假实习报告
2019/06/21 职场文书
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL
OpenCV实现反阈值二值化
2021/11/17 Java/Android
5道关于python基础 while循环练习题
2021/11/27 Python