首先,必须承认 jQuery 是一个伟大的库,在古老的 ie6 时代延长了前端开发的寿命。
但是到了今天,淘宝也已经声明不打算支持 ie8 了,我觉得 jQuery 的定位越来越尴尬了。作为一个前端新手,说说我的感受: 选择器的话,$选择器真的很强大,但是把那么多方法全部封装到$里,理论上来讲效率是十分低下的(当然,在 chrome 下也就是毫秒级甚至都不到的差距),而且现在切页面写样式基本都用 class ,选择元素 id 选择器能满足七成的需求,剩下的用 tag 选择器或者自己封装一个兼容的 class 选择器也都能应付过去。 绑定事件,这个如果不考虑 ie , addEventListener 足够,考虑 ie 也只需要做一个 attachEvent ,考虑绑定函数传参和 window.event 兼容。 jQuery 的$.ajax 是最难找到替代的模块。因为我们这里开发是用的 jsonp 回调,原生的 xhr 用不了,找了好多关于 jsonp 调用的文章才看到用 js 实现的。在找的过程中看到大票的推荐 jQuery 的$.ajax 的人也改变了我对 jQuery 的印象。
(以上经验没经过 ie 甚至 ie8 的蹂躏,所以有不对的地方请轻喷。。菜鸟心里有点脆弱)
说了这么多,先总结一下我对 jQuery 的态度:最开始是不喜欢,因为 jQuery 用多了觉得没学到东西, js 还是一窍不通。说自己是前端开发吧,还不如说自己就是个切图的。后来打算抛弃 jQuery ,对 jQuery 也是一直在半黑不黑。之后有幸自己写了点东西,打算用原生 js 实现。过程很坎坷,但是真的学到了很多。对 jQuery 也越来越佩服。不过也用不回 jQuery 了。做完这个网站之后又有一个东西困扰我,拿出原版 jQuery 写的页面和我用 js 写的页面对比,在 chrome 里的 timeline 看数值都差不多, jQuery 效率低下到底是理论上的还是真的能看出差别?也是个困扰我的问题。
希望 v 站大牛能理性讨论,觉得我说的有问题欢迎指正,只求不喷,只求不喷,只求不喷。
1
chemzqm 2016-12-16 12:58:40 +08:00 2
不管 jquery 还是什么其它的框架类库开发工具,都是些方便开发的工具罢了,本身并没有好坏对错而言的。
jquery 性能问题主要体现在批量操作 dom 上,容易出现性能差,动画延迟,除非你做复杂的动画效果,不然根本体会不到,而且网站 99% 的性能问题在于资源加载,你的 js 就算执行慢几倍用户也基本体验不出来。 jquery 的主要问题: * 组件化机制不标准,难以重用,容易出问题, CommonJS 以及 es6 的 module 可解决这个问题 * 业务逻辑和 dom 操作混合进行, 业务复杂以后无法维护, jsx 算个不错的方案 * 设计理念对于错误过于包容,例如找不到 dom 并不会报错,这对开发友好,但是后续维护会导致调试很麻烦 jquery 一直都是网站开发的利器, 只是我们现在有了针对复杂应用以及规模化开发的更好方案。 |
2
SourceMan 2016-12-16 12:59:25 +08:00
用眼睛看,用心记
|
3
learnshare 2016-12-16 13:13:33 +08:00 1
jQuery 跟 IE 是否存在无关
jQuery 只是个工具库,简化开发难度,提高开发效率。 上班走路去也行,只不过大家都坐地铁,因为快,舒服。 |
4
huijiewei 2016-12-16 13:20:19 +08:00 via iPhone 1
10 年前 把我从浏览器兼容上拯救出来
|
5
loading 2016-12-16 13:21:29 +08:00 via Android
该用就用。
直接说坚决不用的要么是傻,要么还是傻。 |
6
movtoy 2016-12-16 13:30:25 +08:00 1
如果你不是 FB GOOGLE ALIBABA BAIDU 这个级别公司里的领导~什么效率低下都是借口,追星族心态而已~
|
7
alexsunxl 2016-12-16 14:12:10 +08:00 1
jquery 挺好用的, 浏览器从 jquery 那里学来不少东西,比如选择器,比如 classList 。
反正现在的话,看场景吧, 有的时候会有 react 。 而且本身 jquery 也在不断的发展,以后甚至可能激进些搞得断代了,就变成和 python 一样,说之前要带版本号了。 最后顺便吐槽一句, 千万不要以为移动端就选 zepto 了, 照样直接上 jquery , zepto 才是真的定位尴尬,非常垃圾 |
9
preper OP @learnshare 主要是觉得 jquery 用多了反而不懂原生 js 了,现在觉得还是应该至少过一遍 jquery 的源码,常用的 api 要仔细阅读,自己写过之后和 jquery 对比也能巩固基础+学到新东西。
|
10
ianva 2016-12-16 15:16:24 +08:00 1
估计挺多人都没经历过 ie6 兼容的年代,没有库的年代
可知道 innerHTML 这个 IE 系弄出来的 api ,操作其实是异步的? 可知道 ie6 下 对 table 之类的 tr td 是没法直接插入内容的? 可知道 .css() 这个 api 要考虑多少东西? 上面这类问题可以波及到几乎每个 dom api 的细节 那个年代没基础库就基本没法开发项目,即便是 yui2.x 这版本都也有多漏洞,而且 api 非常难用 jquery 就解决了这些问题,而且 api 非常易用,如果那个年代有人说我要离开基础库去写 js ,那是真没法运行,问题太多了。 但现在浏览器没这么多问题了,所以 jquery 就没以前这么大意义,但有两点, api 比 dom 易用,插件积累多年。 至于操作效率从来都是可以忽略的问题,上规模的操作或许会有,但效率不是来自原生的对比,而是和 react 这里东西对比,因为创建及操作一个 element 的开销非常的大,这是原生 api 自身的问题。 而现在真正 jquery 的问题是在于大量 CURD 的项目里,生产力太低 |
11
est 2016-12-16 15:18:22 +08:00
jQuery 谁不用谁傻。
但是找工作千万别说你只会 jQuery 。 |
12
onlyhot 2016-12-16 15:29:31 +08:00 via iPhone
好用 我是后端
|