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 相关文章推荐
面向对象的编程思想在javascript中的运用上部
Nov 20 Javascript
JavaScript传递变量: 值传递?引用传递?
Feb 22 Javascript
超轻量级的基于jquery的三级展开列表
Apr 26 Javascript
JQuery动画和停止动画实例代码
Mar 01 Javascript
JS+CSS实现滑动切换tab菜单效果
Aug 25 Javascript
纯JS代码实现一键分享功能
Apr 20 Javascript
下一代Bootstrap的5个特点 超酷炫!
Jun 17 Javascript
Parcel 打包示例(React HelloWorld)
Jan 16 Javascript
vue 实现Web端的定位功能 获取经纬度
Aug 08 Javascript
微信小程序3D轮播实现代码
Sep 19 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
Nov 20 Vue.js
Vue 实现一个简单的鼠标拖拽滚动效果插件
Dec 10 Vue.js
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
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
2014/05/05 PHP
简单了解PHP编程中数组的指针的使用
2015/11/30 PHP
php对接java现实加签验签的实例
2016/11/25 PHP
thinkPHP5.0框架URL访问方法详解
2017/03/18 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
laravel数据库查询结果自动转数组修改实例
2021/02/27 PHP
用jscript实现列出安装的软件列表
2007/06/18 Javascript
JS打开图片另存为对话框实现代码
2012/12/26 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
JS 实现计算器详解及实例代码(一)
2017/01/08 Javascript
node.js遍历目录的方法示例
2018/08/01 Javascript
Vue-Router的使用方法
2018/09/05 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
2019/06/15 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
2019/09/15 jQuery
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
vue键盘事件点击事件加native操作
2020/07/27 Javascript
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
[01:03:41]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第一场 12.17
2020/12/19 DOTA
python 求1-100之间的奇数或者偶数之和的实例
2019/06/11 Python
使用Python+selenium实现第一个自动化测试脚本
2020/03/17 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
keras实现多种分类网络的方式
2020/06/11 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
html5桌面通知(Web Notifications)实例解析
2014/07/07 HTML / CSS
澳大利亚冒险体验:Adrenaline(跳伞、V8赛车、热气球等)
2017/09/18 全球购物
电大物流学生的自我评价
2013/10/25 职场文书
工会主席岗位责任制
2014/02/11 职场文书
工程师岗位职责规定
2014/02/26 职场文书
暑假家长评语大全
2014/04/17 职场文书
2014年母亲节演讲稿范文
2014/05/07 职场文书
期中考试复习计划
2015/01/19 职场文书
2015财务年终工作总结范文
2015/05/22 职场文书