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 相关文章推荐
js 替换功能函数,用正则表达式解决,js的全部替换
Dec 08 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
Jun 26 Javascript
javascript数组去重小结
Mar 07 Javascript
详解微信小程序开发之下拉刷新 上拉加载
Nov 24 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
Dec 22 Javascript
vue中使用echarts制作圆环图的实例代码
Jul 27 Javascript
JavaScript常见JSON操作实例分析
Aug 08 Javascript
vue2使用keep-alive缓存多层列表页的方法
Sep 21 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
Apr 02 Javascript
深入理解 JS 垃圾回收
Jun 03 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
Jun 26 Javascript
vue实现简单计算商品价格
Sep 14 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
php自定义加密与解密程序实例
2014/12/31 PHP
常用PHP数组排序函数归纳
2016/08/08 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
IE 下的只读 innerHTML
2009/08/21 Javascript
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
2010/05/06 Javascript
使用JS进行目录上传(相当于批量上传)
2010/12/05 Javascript
HTML复选框和单选框 checkbox和radio事件介绍
2012/12/12 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
javascript随机显示背景图片的方法
2015/06/18 Javascript
JS判断字符串字节数并截取长度的方法
2016/03/05 Javascript
基于javascript实现泡泡大冒险网页版小游戏
2016/03/23 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
javascript常用经典算法详解
2017/01/11 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
2017/02/10 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
vue和webpack安装命令详解
2018/06/15 Javascript
微信小程序实现带缩略图轮播效果
2018/11/04 Javascript
[01:28:56]2014 DOTA2华西杯精英邀请赛 5 24 CIS VS DK
2014/05/26 DOTA
[46:55]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
用Python登录Gmail并发送Gmail邮件的教程
2015/04/17 Python
Python切片知识解析
2016/03/06 Python
python实现Adapter模式实例代码
2018/02/09 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
2018/12/07 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
HTML5新增的表单元素和属性实例解析
2014/07/07 HTML / CSS
HTML5中form如何关闭自动完成功能的方法
2018/07/02 HTML / CSS
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
函授自我鉴定
2013/11/06 职场文书
建筑工程技术专业求职信
2014/07/16 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
办公用品管理制度
2015/08/04 职场文书
个人合作协议范本
2015/08/06 职场文书
田径运动会广播稿
2015/08/19 职场文书
python实现语音常用度量方法的代码详解
2021/05/25 Python