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 相关文章推荐
jquery 模拟雅虎首页的点击对话框效果
Apr 11 Javascript
js获取url中指定参数值的示例代码
Dec 14 Javascript
用JavaScript实现用一个DIV来包装文本元素节点
Sep 09 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
Aug 09 Javascript
javascript操作cookie
Jan 17 Javascript
AngularJS监听路由变化的方法
Mar 07 Javascript
Vue中引入样式文件的方法
Aug 18 Javascript
react 实现页面代码分割、按需加载的方法
Apr 03 Javascript
详解vue-cli@2.x项目迁移日志
Jun 06 Javascript
微信小程序自定义组件实现环形进度条
Nov 17 Javascript
小程序如何支持使用 async/await详解
Sep 12 Javascript
浅谈webpack和webpack-cli模块源码分析
Jan 19 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
smarty实例教程
2006/11/19 PHP
php-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
jQuery Mobile + PHP实现文件上传
2014/12/12 PHP
php从文件夹随机读取文件的方法
2015/06/01 PHP
jquery中获取select选中值的代码
2011/06/27 Javascript
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
浅析JS运动
2015/12/28 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
jQuery操作cookie
2016/08/08 Javascript
JS异步文件分片断点上传的实现思路
2016/12/25 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
2017/04/01 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
JavaScript实现左侧菜单效果
2017/12/14 Javascript
vue单页缓存方案分析及实现
2018/09/25 Javascript
vue elementui form表单验证的实现
2018/11/11 Javascript
微信小程序如何获取用户收货地址
2018/11/27 Javascript
聊聊鉴权那些事(推荐)
2019/08/22 Javascript
Vue v-model组件封装(类似弹窗组件)
2020/01/08 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
用Python抢过年的火车票附源码
2015/12/07 Python
Python类的继承、多态及获取对象信息操作详解
2019/02/28 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
美国最大网上鞋店:Zappos
2016/07/25 全球购物
Sam’s Club山姆会员商店:沃尔玛旗下高端会员制商店
2017/01/16 全球购物
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
印尼值得信赖的在线交易网站:Bukalapak
2019/03/11 全球购物
MIS软件工程师的面试题
2016/04/22 面试题
宣传工作经验材料
2014/06/02 职场文书
学生检讨书如何写
2014/10/30 职场文书
表扬信范文
2015/05/04 职场文书
毕业论文致谢怎么写
2015/05/14 职场文书
拯救大兵瑞恩观后感
2015/06/09 职场文书
Python 循环读取数据内存不足的解决方案
2021/05/25 Python