最近在学习jquery,想问平时项目中这个用的多吗?都用在哪些方面呢?
无处不在,但要让现在的孩子相信这一点越来越难了,有太多大牛在鼓吹框架,鼓吹ES6,ES7,而忘记了行业里真正在输出生产力的东西。有时候顾此失彼非大牛本意,但是有不少人确实做技术缺少正念,也没有什么耐心,更多的学习者受了影响,一头扎进并不适合初学,也并不更加关键的框架技术。
类似问题知乎上问得很多,比如现在(2017年)是否还有必要学习jQuery,在很多地方,所谓大神和大牛都毫不吝啬地下结论“已经过时”。
我把自己的答案贴过来
学jQuery不是因为“经典”,而是因为“有用”。
市场上大量的UX实现都是jQuery插件,bootstrap,materialize的JS插件部分依赖什么? 很多时候用jQuery写DOM操作代码是最好的实现,不管你用Angular,React还是Vue 有相当多现存的项目是不会迁移到所谓现代框架的,因为没有必要,你将来有可能需要维护这样的项目 未来有相当多的项目是不会用所谓现代框架的,还是因为没有必要,你将来有可能需要开发这些项目 除非你觉得以后”所有“的前端项目一定是基于框架的,那就不要学jQuery了,我认为事实远非如此。那些极力鼓吹JS框架的人,借着社区炒作兴风作浪,因为某个技术得势的时候,他们知道怎么鼓吹都不会错。
有多少项目真是必须用Angular,Vue,React的?我们不妨诚实地想想,真的,诚实地 …
其实有太多人是没有框架根本做不了开发,基础岌岌可危,也就剩下拿框架来说事儿了,框架帮你搞定一切事情吗?远远不是,你要掌握的库,也远远不止jQuery。
有几十个大神一起鼓吹的时候,你要想说句话都难。什么时候中国的技术圈脱离了非追捧即打压,非打压即吹捧的两级模式,才是真正成熟了。
@flamingtop 写了这么多,而且很深刻,非常感谢!
在不使用react、vue等组件化框架的时候,一个网站不免要进行大量的dom节点操作和ajax。 而单就dom节点操作这一个板块上,jquery就可以让你的工作效率快上好几倍。 更何况更酷的ajax呢
@wangchaoduo 恩,最近刚好在学ajax,不过感受还不深
奉劝作者一句,别被楼上误导了,jQuery现在真是没多大用了,大大小小项目用 vue、react 都没问题,坐飞机和走路只有你自己去体会了,所以建议作者去用jQuery和vue写过项目之后,再去看看那些所谓的“脱离项目都是扯淡啊,什么的”,看看国外的开发者都在干嘛,你们都在干嘛
@flamingtop 你前提就搞错了。
很多时候用jQuery写DOM操作代码是最好的实现,不管你用Angular,React还是Vue
不好意思,这3个框架都是不让使用者直接操作dom的,要用这3种框架根本不需要引你jq入来占打包文件的大小。 顺便说一下,我司的一个管理后台,本来后端人员一开始用jq写,结果被组长吐槽dom操作过多,代码太繁琐,最后用react重构了,代码架构才终于可控了。不知用jq来写得多花多少精力呢。 我觉得你不过是脱离不了dom操作这种思想的老顽固罢了。不如说你有实际对比过用jq和用框架的区别吗。
@jokerapi 这种事情只有等楼主自己去体会了,否则就会听信别人的,那些框架都是什么什么大牛在鼓吹,爽不爽只有自己知道
学习是有必要的
任何东西都是从基础开始的, 你所处的环境不是一张白纸, 你需要阅读很多别人的东西,来丰富你的视野和思维方式
@flamingtop 框架解决的痛点在于在提高维护能力的同时给予你看的过去的性能 随着前端应用越来越复杂 jq这种直接操作dom的形式已经很难跟得上时代了 如果你自己公司有用jq和框架 你可以问问在需求改动和维护 测试上 框架比jq强了多少 如果你所谓的项目只是做几个官网做几个活动页 这种情况下jq确实比框架好
@@@@@怎么说,个人感觉,写app页面使用jQuery确实很爽,毕竟很多细节东西还需要靠原生js之类的,各种框架呢,vue,bootstrap之类的用着确实方便,那速度写的是刚刚的快呀,反正用过jQuery的人都不愿再碰js,和这道理差不多吧,路呢自己走,别人说的好那是人家经历过。我就这么一说,你就那么一听。我赞同楼上所有人说的话,我觉得一楼的最后一句让我很感触,实际不只是技术圈,可以说这是目前社会都该思考的问题
@jokerapi 你觉得我没用过框架,来回答是因为无知?这叫狗眼看人低。
@hxh1246996371 “脱离项目都是扯淡啊,什么的”,如果项目场景都不重要了,什么才重要?我知道这话不是你自己说的,有不少老在后面back你,比如传说的“贺老”,是你自己在思考,还是别人在代替你思考。
jQuery曾是前端界使用最广泛的库,几乎所有你平时上的网站都在用。近几年各种框架兴起,从生产力上看jQuery的思路有些跟不上了,但仍然建议新人学,使用jQuery和读它源码都能有很大启发。
我不是说DOM操作有多好,我也知道很多觉得DOM操作不好维护的,很多是不懂得封装,不知道怎么维护。 框架承诺的不用DOM操作也没有什么不好,但如果你觉得这能解决100%的前端问题,是因为你还没碰到那些它解决不了也解决不好的问题,比如很复杂的交互是数据绑定解决不了的,复杂交互是持续状态迁移,不是rerender(多数框架的实现)承诺解决的事。一个后台程序,侧重大量结构化数据,有大量交互,但都是以数据为中心的,所以适合用框架来解决。所以说跟着大牛贸贸然说“场景不重要的”,你只是井底之蛙,你以为自己一方天地就是整个世界。 这里讨论的,是jQuery有没有用,什么时候有用的问题,原因在我最开始的回答里已经说了。 你否认这些原因,不代表它们在别人的项目中不继续存在。
难道一种技术和另一种技术必须你死我活,否则突显不出你的优越性来? 天底下的东西没有共生共存的理由?当然有。 你们这些跟在大神后面屁颠屁颠的,鸡毛当令箭,我看脑子秀逗的不少。
拿国外程序员说事儿的,绝大多数的jQuery一线插件都是国外程序员写的。框架都是国外程序员写的,只有你们,觉得用用别人写的东西,知道5%,就到处拿来教训人。国外当然有大量用框架的,我就在国外,我没听过谁用了框架来说“项目场景不重要”,jQuery已经死了(不只是jQuery,框架之外的生态本来就很大),多数人是比较务实的,对项目有实质用处,就集成进来。没有你们这般乖戾。
别人不因为自己项目不用jQuery,就一定要把jQuery处死。
每个框架都有它的适用场景,如果要做大量 DOM 操作,jQuery简单的 API 还是很不错的
我只是想帮有些人正念,一个在行业里存在了10+年的东西,到目前还在发挥巨大作用,作为学习者和使用者,你不应该放弃。 尤其是不应该因为框架放弃,也许你的项目不用到jQuery,而只有框架,但作为一个前端程序员,你必须理解DOM本身,哪怕你不一定去自己写DOM代码。 而不是拔苗助长,忽略了重要的基础知识。
不只是jQuery,还有不少常用重要的库,他们会配合框架来开发,而不是被框架代替。
统一回复,感谢大家的建议,最为初学者我希望听取大家的意见,也希望多学一点,谢谢!
哎,中庸害死人啊。楼上的我就不想浪费口水了。只是希望楼主你记住,别人再怎么说,那都是废话,自己都去体会一下吧。没有什么是不变的,更别说一个第三方框架,向前看很重要,如果你还在纠结那些什么IE6的hack,只能劝你改行了,前端不适合你,还有就是,到时找工作的是你,上面的帮不了你什么
没人说jq不好 jq以前解决了原生js操作dom不方便 浏览器差异大的问题 但是现在前端应用越来越复杂了 浏览器标准越来越统一了 jq的适用场景越来越少了 框架掩盖了底层dom操作 让你更有精力专注在逻辑 测试 还有其他方面 就跟建房子一样 可能建一个小房子你手砌砖 和点水泥就能搞定了 但是如果建一栋高楼大厦你怎么比的上那些大型机械 完了还要说一句 你看那个塔吊司机连箩筐搬砖都不会 只会用机械 那些和水泥的居然还用车 我就喜欢用铲子搅 需求一改 人家低耦合模块化轻松搞定 你还在想需求改了 这个又要重构了 另外 我不觉的一个熟练使用react redux的人会比一个一个熟练使用各种jq插件的人都js基础差 还是那句话 随着时代的发展 jq的适用性只会越来越低 人家那么多公司开始用框架建造前端应用 不是人家leader跟风装比 好不好用 你去体验一下就知道了
#存在就一定有它的意义,你学谁都要理解何时能用上,而不是该不该学习的问题,举个例子,下面一段函数就是jquery和react混用,有一个文章组件,文章实际内容是第三方传过来的html字符串,里面的图片都是一个图片一定占一行,但是没有大小控制,在pc端显示是没有问题,但是在手机端显示,图片按原大小显示,就破坏我们的布局了,所以有个下面一段
import React,{Component} from 'react';
import $ from 'jquery';
class Article extens Component{
componentDidMount(){
var imgs = $('.article .content img');
var len = imgs.length;
for(let i =0; i<len; i++){
imgs[i].style.width='100%';
}
}
render(){
return(
<div className="article">
<div className="title">{this.props.title}<div>
<div className="content" dangerouslySetHtml={{__html:this.props.content}} />
</div>
);
}
}
大致代码如上所示,看看,这一刻,jquery不是就和react碰撞出激情的火花了吗?你的技能树点亮的东西总归对你是有帮助的
@fantasticsoul 恩恩,多谢,学习中……
- 样式可以用css控制。
- 何须jquery啊。
const imgs = document.querySelectorAll('.article .content img');
[...imgs].forEach(img => img.style.width = '100%')
3.在react中操作dom会有副作用。因为数据如果发生变化,render会被调用,一旦react更新了dom节点,这时候上面的那些手动修改的dom属性都会被置为react决定的状态,然后你又得重新手动去修改了。
说实话,jquery这种框架,属于看文档就能马上上手的,何必纠结,用到就用,用不到,也不费时间。
@playlei 我目前初学 node 想知道jqury对一个初学者的价值
一个引战的话题 ,项目看多了,肯定有项目会用到 jqury 。 自己纯手动写俩网页就知道 jqury 是干嘛的了
@hi363138911 恩恩,多谢
手脚并用,没什么好争的。jQuery 在 DOM 操作频繁的时候,以及一些特殊场景的时候还是需要的,比如 React 目前没有好办法控制 video ;其实 jQuery 最大的威力在于它的兼容性,如果没有了兼容性和对 DOM 操作的简洁封装,配合原生照样写的很6
我觉得楼已经很歪了。 看了上面几楼,总结一下无非这么几种观点
- vue在哪都可以使用,任何项目都能用vue,完全没必要用jquery了
- 组件化虽然很好用,但还是有很多地方会使用传统开发方式
- jquery用于学习非常合适
我是同意2,3观点的,并且需要反复提醒楼主,千万不要被持有观点一的各众所迷惑。 前端日新月异,可能出去度个假,回来就发现整个前端团队都在使用你可能都没听说过的框架了。 ** 所以框架都是次要的,重要的是对底层的了解 ** 而关于jquery,不论是它的sizzle,deferred,都是非常精髓的模块,如果能掌握整个jquery的源码,对于提升自己的能力是非常大的一步。 然后结尾,真是看那些无脑鼓吹vue的不顺眼
现在还是挺多网站用jQuery/Zepto写的,所以说jQuery被淘汰可能还是稍微早了点,而且学习jQuery对深入理解js帮助不小,但组件化显然是目前的趋势,所以楼主也需要掌握三驾马车之一
看了一天 API 然后会了。。。
来自酷炫的 CNodeMD
@jokerapi cool ,其实我最初是想 $$(’.article .content img’)的,怕这样写太激进,换成了一个$符号了,多谢提醒,居然忘了它