框架或者库最早从jquery开始,我把jquery称之为传统的库。而vue、react、ng为现代化的库。
jquery是2006年发布1.0版本,2013 年 5 月react开源,vue是2014年对外发版。
jquery在使用过程中多半充当的是库的作用,相对现在前端框架有以下几个共同点:
1,也可以js驱动
2,可以模板化
本文是说的特征是框架单独使用而不与webpack等工程化工具结合的时候。而现在前端框架具备的特点:
1,一般来说是js驱动
也就是需要挂载到dom节点上,才能发挥作用。而不是传统编程的直出。
2,组件化
组件化提高了复用性,提高了开发效率。
3,单页面应用
组件化加上路由,单页面应用是一个必然的结果。
4,单向数据流
单向数据流是一种数据管理方式,view只能派发action修改store,而不能直接修改。
5,虚拟DOM
虚拟dom降低了操作原生dom节点的代价。
6,模板化
7,hooks
提高组件之间状态复用
8,mvvm结构
react和vue对比
1,都采用了js驱动
2,都可以实现组件化
3,也具备单页面应用特点
vue的store和router是作为参数传递给构造函数的,而react的store和router是作为组件包裹在dom外面的
4,都实现了单向数据流
vue是修改store的数据,而react返回一个新的state数据。
这种机制背后当大数量时,react因为返回一个新数据,需要深拷贝,就会导致性能降低。所以react强调数据不可变性。所以react有了Immutable。Immutable确实对react性能做了优化,因此来说react适合大型项目,这里指的是数据量大且使用了store。
5,虚拟dom
vue触发虚拟dom采用的是双向数据绑定拦截触发;而react是局部更新,reactjs需要手动设置来节省更新性能。这点也是很重要的不同点。也在强调数据的不可变性。
6,模板化
vue使用html、css和js作为模板;而react保留了JavaScript的全编程能力,react对typeScript的支持效果更好。react使用jsx作为模板。
vue的模板需要在components中转,但是react不需要。
7,hooks
vue3也开发了钩子
8,mvvm结构
9,react严格意义上讲只针对MVC中的view层,Vue则是MVVM模式
10,在 Vue 中我们组合不同功能的方式是通过 mixin,而在React中我们通过 HOC (高阶组件)。其实vue中也可以使用HOC。
11,另外 Vuex 既可以 dispatch action 也可以 commit updates,而 Redux 中只能进行 dispatch,并不能直接调用 reducer 进行修改。
react强调数据的不变性,vue强调数据的可变性。这其实是框架设计底层决定的。这句话的意思是想要利用好react,规划的时候要做到数据的不可变性。这样才能更好的利用react。
vue的数据的可变性,也不是所有数据都变化才好,是说vue对数据可变性支持更好,不用考虑太多的数据不可变化的问题。
在实际使用中想要利用好react需要更好的数据不变性规划。这样也变相的提升了实际的性能。
从某个角度讲,不管是vue还是react都是一种约定流程的开发方式。