你尚未登录,仅允许查看本站部分内容。请登录使用邀请码注册
Aresn

我们在使用jQuery的时候,到底在使用什么? 0个回复 专栏 @ Javascript

Aresn 发布于 9 月前

本文首发于TalkingCoder,一个有逼格的程序员社区。

jQuery(or Zepto)作为前端标杆,风风光光了许多年,基本上已经成为开发必备的前端框架了。它的成功,主要是因为它让JavaScript的使用变的简单,而且通俗易懂,新手可以在不熟练原生JavaScript的前提下,很快就能写出交互复杂的页面。当然它的优点还有一大坨,就不细说了。写这篇文章,是因为在最近一年的开发中,使用了其他一些前端框架后,对jQuery有了一些新的思考。

在MV*(MVVM)框架诞生之前,我们怎么用jQuery?

其实这个问题很大,一千个读者就有一千个哈姆雷特,不同阶段的开发者对jQuery的理解,或是JavaScript的理解程度是不同的。刚入门的前端开发者,可能喜欢直接操作DOM,所有会 $() 满天飞,似乎懂CSS就懂jQuery选择器了。.hide()、.show()、.css()、.attr()、.html()会用的很频繁,.fadeIn()、.fadeOut()、.slideDown()、.slideUp()也经常用来玩一些动画。不过话说回来,jQuery确实擅长干这些。一开始会觉得,哇塞,这么爽,终于可以做交互页面了,要哪个DOM,我都能轻松的获取到。

再后来,开始用ajax。jQuery的ajax解决方案确实做的很好用,好用到很多人只知道用jQuery的ajax,而不知道xhr是什么鬼,更别提写个原生ajax了。有了DOM,有了数据,再来几个开源的jQuery插件,貌似觉得前端开发也就这么回事了,分分钟攒出一个交互复杂的页面来。没错,市面上大部分前端开发,可能都是这么过来的吧,而且这部分人的市场占有率还不少。

再后面,交互变得频繁,而直接操作DOM会耗大量时间来写一堆重复的业务逻辑代码,这时便有了前端模板,比如doT、artTemplate。开发者只用维护数据即可,然后交给模板去处理,用事件委托来监听事件。这种模式也成了主流,至今很多项目也仍然使用的这种模式。它的好处就是前后端都可以用,而且不用直接操作DOM,省去了大量业务逻辑代码,维护起来也很方便,性能也不差。

在使用Angular时,我们怎么用jQuery?

Angular(后面直接写为ng)的出现,确实改变了前端开发的习惯和认知。现在想来,如果开发者没使用过jQuery,直接学习ng的话可能理解起来会轻松很多,要不然总想着jQuery的那一套,这也是为什么后端开发人员非常喜欢用ng来开发类似管理后台的产品,比如TalkingData。当然,我最初在学习ng时,也是脱不开jQuery的束缚,虽然有$http服务,我还是喜欢用jQuery的ajax,然后再$apply,插件还是喜欢jQuery的,因为用习惯了。ng和jQuery混用,这时我们已经不再操作DOM了,一切都是HTML和数据。但是jQuery是必须的吗?当然不是,现在ng的插件已经非常丰富了,能满足绝大部分的交互需求,即使没有,也会首选开发ng插件而非jQuery的了,所以慢慢地jQuery也就不再是项目中不可缺少的了。

在使用Vue时,我们怎么用jQuery?

我使用Vue.js不是很久,但却非常喜欢这个前端框架,它相比Angular使用更简单,渲染更高效,文档详细,门槛很低。在最初开发TalkingCoder时,我是没有使用jQuery的,我用原生自己封装了ajax和document.ready,一开始没有任何问题,因为不涉及到直接操作DOM。后来不得不使用jQuery插件时,开始想用Zepto代替jQuery,然后将插件改写为兼容Zepto的,因为Vue是一个新兴项目,它的组件还不是非常多,但又不想花太多时间造轮子,所以就妥协了。再后来使用Simditor富文本编辑器时,实在没办法,又将Zepto替换为jQuery了。

最近刚开发完一个项目,算是交互比较复杂的了,深度使用可复用的组件,vue.js可是帮到了大忙。一开始没有考虑太多,直接就把jQuery加进去了,因为想着可能会用到的嘛。但文章写到这时,我全局搜了一下,发现几乎没有地方在使用jQuery,代码加起来可能就几百行,然后回头想一想,好像确实是这样的,而且使用过的一些,也是可以改写为vue的。

总结

至于React,笔者研究的并不多,所以不知道相关的情况。但就Angular和Vue的使用来看,jQuery虽还在用,但其作用已经很小了,甚至完全可以被取代,如果非要使用,Zepto也是可以替代jQuery的。前端最近几年发展的很快,各种框架层出不穷,jQuery已经慢慢不再是主流了,它的模式也在被各种新思想颠覆着。所以回到问题,我们在使用jQuery的时候,到底在使用什么?其实答案很简单,我们为什么用jQuery,因为它过去成为了前端开发的标准,不用它行不行,当然行,但你不还得自己搞一套类jQuery的东西吗,总不能所有都document.getElementById吧!所以最后还是会回到那个问题来:用什么框架,什么技术栈取决于你当前的团队实力和项目,没有谁好谁不好,只有谁合适当前,还有,任何一个框架的产生,都是为了解决某个具体问题的,不能一棍子打死说某个框架不好,也许只是不适合当前的你!

等待第一条回复
登录后回复,如无账号,请使用邀请码注册