最近在学习vue,便有了这样一个疑问?
在项目中使用vue,可以直接脱离了 jquery 了吗?
我感觉可以不用操作 dom 是很轻松,但jquery有些方法是要比原生 js 更加简洁,比如 $.ajax() ,addclass()等这些方法,不仅仅局限于这些。
没想到有这么多的回答,感谢大家的建议,也希望更多的人发表出自己的看法。
最近在学习vue,便有了这样一个疑问?
在项目中使用vue,可以直接脱离了 jquery 了吗?
我感觉可以不用操作 dom 是很轻松,但jquery有些方法是要比原生 js 更加简洁,比如 $.ajax() ,addclass()等这些方法,不仅仅局限于这些。
没想到有这么多的回答,感谢大家的建议,也希望更多的人发表出自己的看法。
如果用的 Vue 或 React 尽量不要用 jQuery!!!另 $.ajax
有很多现成的库,如:https://github.com/github/fetch,https://github.com/mzabriskie...
这个问题跟前些年使用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也不失为一个合理的方案
ajax
现在有很多的库是专门做这个的,比如vue
官方推荐的axios
还有fetch
都很好用。如果是需要一些操作dom/class的方法,可以借用jquery
里面的方法,自己封装一个utils工具模块,自己用就行了,没必要引入整个jquery。
vue 不熟悉,不过就react的情况来看,就应该脱离jquery啊:
dom 操作: react 本来就是希望通过数据绑定脱离底层dom操作,特殊情况,使用 document api就足够了
ajax : 异步数据未来的方向就是 fetch,所以直接切换过来就好了
动画 : jquery 动画确实挺好用的,兼容性也不错,不过最近有个 anime 火的不要不要的,功能强大啊
其他工具 : lodash 提供了更强大的各类工具类功能,完全足够用了
综上,从必要性角度来说,在 react 环境下,其实没太大必要用jquery,而且 react 的意愿就是脱离对底层dom操作的依赖,所以反而是不要用jquery更好。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
2 回答4.8k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
如果仅限你说的这么几点,确实是可以脱离jQuery了
首先,
$.ajax
这种东西,有各种各样的轻量库可以实现,比如axios
等addClass()
这种事情,在这种数据绑定的框架里面,直接使用数据绑定类就可以了,没有必要为了操作某一个DOM而加载整个jQuery
Vue在开发带有jQuery框架时,需要在webpack配置处添加组件配置,每个项目都这样做一遍着实麻烦
你说的这些并不全,有时候因为需要用到诸如Bootstrap这样的库,而不得不使用jQuery,那么在这种情况下,应该考虑使用
$.ajax
而不是用axios
实现AJAX请求。因为在不得不使用jQuery的情况下,再加一个用于AJAX请求的库就是多余了。