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插件Tabs实现过程
Jul 06 Javascript
jquery easyui combox一些实用的小方法
Dec 25 Javascript
JavaScript实现的链表数据结构实例
Apr 02 Javascript
JS实现日期时间动态显示的方法
Dec 07 Javascript
利用jquery实现下拉框的禁用与启用
Dec 07 Javascript
canvas实现简易的圆环进度条效果
Feb 28 Javascript
对于input 框限定输入值为浮点型的js代码
Sep 25 Javascript
d3.js实现自定义多y轴折线图的示例代码
May 30 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
Aug 06 Javascript
在vue项目中引入vue-beauty操作方法
Feb 11 Javascript
javascript 代码是如何被压缩的示例代码
May 06 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
Nov 05 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
编写兼容IE和FireFox的脚本
2009/05/18 Javascript
Javascript 汉字字节判断
2009/08/01 Javascript
关于innerHTML后丢失动态绑定的EVENT问题解决方法
2013/05/19 Javascript
让checkbox不选中即将选中的checkbox不选中
2014/07/11 Javascript
JavaScript中的全局对象介绍
2015/01/01 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
2017/03/02 Javascript
JS实现页面打印功能
2017/03/16 Javascript
详谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/25 Javascript
利用require.js与angular搭建spa应用的方法实例
2017/07/19 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
jquery层次选择器的介绍
2019/01/18 jQuery
原生js实现日期选择插件
2020/05/21 Javascript
[01:53]2016完美“圣”典风云人物:Maybe专访
2016/12/05 DOTA
跟老齐学Python之编写类之三子类
2014/10/11 Python
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
Python的Flask框架标配模板引擎Jinja2的使用教程
2016/07/12 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
如何用 Python 制作一个迷宫游戏
2021/02/25 Python
HTML5本地数据库基础操作详解
2016/04/26 HTML / CSS
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
俄罗斯化妆品和香水网上商店:Iledebeaute
2019/01/03 全球购物
LN-CC日本:高端男装和女装的奢侈时尚目的地
2019/09/01 全球购物
创联软件面试题笔试题
2012/10/07 面试题
党在我心中演讲稿
2014/09/02 职场文书
普通党员对照检查材料
2014/09/24 职场文书
新闻人物通讯稿
2014/10/09 职场文书
火烧圆明园的观后感
2015/06/03 职场文书
换届选举主持词
2015/07/03 职场文书
五一放假通知怎么写
2015/08/18 职场文书
vue Element-ui表格实现树形结构表格
2021/06/07 Vue.js
Python re.sub 反向引用的实现
2021/07/07 Python
通过T-SQL语句创建游标与实现数据库加解密功能
2022/03/16 SQL Server
Win11 25163.1010更新补丁KB5016904推送,测试服务验证管道(附更新修复汇总)
2022/07/23 数码科技