skyADMIN

Vue和jQuery

简单谈下我对Vue和jQuery的区别的认识。

首先最本质的是,是它们思想的区别,Vue的思想是数据驱动,是和普通的javascript有本质的不同,而jQuery是一套对js深度封装的库。

但是Vue能做到的事,jQuery同样能做到,只是如何做和容不容易做以及日后的维护的问题。

什么是数据驱动,这个问题对于没有亲自写过Vue(angular和react也行,都是这个思想),是很难以理解的。

与之对应的jquery是什么?是指令式的。什么叫指令式,这个很好理解,只要写过js,不管是原生还是jquery,一般都是用js来操作dom元素,比如,有个字我想把它变成红色,有个按钮,我想点击后弹出一个警告框。

以上东西该怎么写?先选择DOM元素,再通过API将它的样式增加或者改变。按钮,为它添加一个事件监听,比如click事件,监听到该事件发生时触发我们留下的回掉函数。

看上去好像没什么问题,一切已经足够?

可是现在浏览器越来越先进,人们希望更好用的软件,最好能有跨平台,随时随地有网就能用,对,我说的就是web app。前几年,移动端上,web被native app打压得抬不起头,我认为主要是这几个原因:1、高昂的流量费。2、慢得令人发指的2G/3G网络。3、性能让人难以接受的浏览器。

而如今又变了。4G网络,资费的便宜,wifi的普及,浏览器性能的疯狂提升。google虽然有占据了80%以上手机市场的操作系统,但是这个操作系统并未为它带来过去搜索引擎卖广告一般的巨额收益。嗯,如果说百度是中国最大的广告商,google就是全世界最大的广告商。

所以google想了下,还是web才是自己的基本盘,几年内chrome浏览器迭代无数个版本,用一款划时代的V8引擎硬生生把一款解析执行的脚本语言变成了性能还蛮过得去的编译语言。

我好像强行说了几段废话。绕回来,jquery真的够了么。当页面越来越复杂,用户越来越挑剔,JS可以做的事越来越多(canvas/webVR……),js代码越写越长,1000行的JS代码简直家常便饭。

有句话怎么说来着?动态语言一时爽,重构全家……不能说了。。。

当为了弄明白一个函数到底干了什么需要在代码中上蹿下跳找无数遍,当代码越写越大,毫无组织架构的代码创造了一堆堆的全局变量,冲突、bug是在所难免的。

还有,无数的按钮要绑定事件,无数的输入框要获取值。反复地写一些监听函数/取值方法,散布在整个文件中,想想就可怕。

这些问题怎么解决。首先,要解决混乱的问题,jquery插件肯定不行……就有了模块化规范,CMD/AMD/UMD。这个好像和vue没啥关系……但是有了模块化还是不够啊,模块只能帮忙处理逻辑上的问题,但是web不仅有逻辑还有页面,如何将带着逻辑的页面的一部分拿来复用。

就是组件化,组件化的思路起步应该也很早,毕竟前端是才兴起的,老牌语言踩足了坑,过去的故事我不清楚,就目前来看,三大主流前端框架都实现了组件化,通过组件的拼凑可以快速搭建产品。

好了,感觉牛逼吹大了,我都不知道自己在说什么了,收尾:

vue之于jquery,区别在于,更先进的理念:数据驱动;更合适的架构:模块化、组件化;性能和体积我没比较过,vue官网上的比较框架里,也没有提到jquery,而是横向和react/angular等MVVM框架对比。确实,用了Vue,不会再怀念jQuery的。

码字很辛苦,转载请注明来自环宇博客《Vue和jQuery》

评论