使用vue,react等框架可以直接脱离jquery了吗?

最近在学习vue,便有了这样一个疑问?

在项目中使用vue,可以直接脱离了 jquery 了吗?

我感觉可以不用操作 dom 是很轻松,但jquery有些方法是要比原生 js 更加简洁,比如 $.ajax() ,addclass()等这些方法,不仅仅局限于这些。

没想到有这么多的回答,感谢大家的建议,也希望更多的人发表出自己的看法。

阅读 16k
18 个回答
  1. 如果仅限你说的这么几点,确实是可以脱离jQuery了

  2. 首先,$.ajax这种东西,有各种各样的轻量库可以实现,比如axios

  3. addClass()这种事情,在这种数据绑定的框架里面,直接使用数据绑定类就可以了,没有必要为了操作某一个DOM而加载整个jQuery

  4. Vue在开发带有jQuery框架时,需要在webpack配置处添加组件配置,每个项目都这样做一遍着实麻烦

  5. 你说的这些并不全,有时候因为需要用到诸如Bootstrap这样的库,而不得不使用jQuery,那么在这种情况下,应该考虑使用$.ajax而不是用axios实现AJAX请求。因为在不得不使用jQuery的情况下,再加一个用于AJAX请求的库就是多余了。

视情况而定,交互复杂,还是需要 jQuery,比如拖拽控件那种交互方式,开发中,要技术配合项目,而不是项目配合技术

这个问题跟前些年使用angularjs是不是不能用jquery,我可以告诉你我的答案:不是。

angularjs,vue,react等等这些是基础框架。能用jquery是因为JQ的某些方面做的更好,比如跨浏览器兼容的事件监听。这个时候用jquery没关系。
但是如果你用jquery绕过框架去操作DOM,那就不行。因为你违背了以上几个框架的核心思想数据驱动视图

综上,只要你的核心思想是通过数据驱动视图,用不用jquery没有要求

理论上说大部分完全可以不用jQuery,ajax可以使用第三方任何ajax插件代替,比如reqwuest、rescource、axios。addclass()可以在模板中使用v-bind:class方法绑定类,<div v-bind:class="{ active: isActive }"></div>通过控制isActive值的false或true决定是否添加active这个class名,如isActive=true时渲染为<div class="active"></div>

不过目前vue里做类似resize()事件的,还是使用原生事件做,窗口发生变化设置相应样式,虽然css3媒体查询能做到,但有些情况下必须使用这个事件,比如svg的绘图根据浏览器窗口自适应这个不能使用媒体查询自响应(可能我还不知道其他方法望知晓的传授下知识)。
类似的还有其他楼上说的,拖拽啊之类的DOM操作。现在的浏览器提供了一些新的dom查找法方法跟jQuery差不多了,都可以原生实现,没必要在一个框架里再次引入一个类库,感觉太冗余(对我来说是这样的)。

用了vue和react按理是应该尽量规避jq 但是从实际项目来说 各个框架有自己本身的优势 vue和react对数据与函数的绑定更方便 但是dom复杂的dom操作就是软肋 有时项目如果需要负责的dom操作使用jq也不失为一个合理的方案

jQuery 的很多插件还是有必要使用的,不要非此即彼,例如 Ajax 的时候使用 axios 不也是要多一个第三方库么,为啥就不直接使用 jQuery 呢?

ajax现在有很多的库是专门做这个的,比如vue官方推荐的axios还有fetch都很好用。如果是需要一些操作dom/class的方法,可以借用jquery里面的方法,自己封装一个utils工具模块,自己用就行了,没必要引入整个jquery。

vue 不熟悉,不过就react的情况来看,就应该脱离jquery啊:

  1. dom 操作: react 本来就是希望通过数据绑定脱离底层dom操作,特殊情况,使用 document api就足够了

  2. ajax : 异步数据未来的方向就是 fetch,所以直接切换过来就好了

  3. 动画 : jquery 动画确实挺好用的,兼容性也不错,不过最近有个 anime 火的不要不要的,功能强大啊

  4. 其他工具 : lodash 提供了更强大的各类工具类功能,完全足够用了

综上,从必要性角度来说,在 react 环境下,其实没太大必要用jquery,而且 react 的意愿就是脱离对底层dom操作的依赖,所以反而是不要用jquery更好。

首先答案是理论上可以脱离,无法脱离只会有两个原因:
1.没有用好vue
2.jquery有丰富的插件,为了直接使用第三方的jQuery插件,还需要引入jQuery

可以完全脱离JQ了。比如你说的ajax有axios实现,class可以使用原生classList接口或者vue的:class来实现.没有必要为了这种功能引入整个jq

新手上路,请多包涵

使用react的时候尽量不要用JQ,使用JQ会直接操作DOM,就会降低react的性能

怎么又好有快完成项目 就怎么来 不用拘束框架 内裤

基本上是不需要的,如果实在需要进行dom操作的话可以使用原生的一些api来代替

现在项目用的bootstrap、vue、typescript、jquery系列,jquery毕竟对ie的兼容好啊

感觉 这些MVVM框架其实是间接的操作了dom,只是封装的比较厉害而已,微信小程序才是真正的不操作dom,连document都不支持

新手上路,请多包涵

看具体项目吧 有的需要用的还是要用 能不用就尽量不用呗

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题