react vue angular的浅谈
一、先来说说大家比较熟的vue把,你们知道vue1-vue2-vue3都经历了什么吗?
1、vue2比vue1的改进
生命周期的改变: beforeCompile 移除, 使用 created 替代,compiled 移除,使用 mounted 替换等。。。
语法:新数组语法 (value, index) in list,并丢弃 $index 和 $key。过滤器废弃,不再这样写 <div v-for="el in list | limitBy 10">{{ el }}</div>,改而在方法里自己做好分割。围绕 DOM 的实例方法vm.$appendTo 移除。 $dispatch 和 $broadcast 废弃,前者用于向上级派发事件,只要是它的父级(一级或多级以上),都可以在组件内通过 $on (或 events,2.x 已废弃)监听到,后者相反,是由上级向下级广播事件的。
2、vue3比vue2的改进
使用了 proxy 替代 Object.defineProperty:Vue2 的双休数据绑定是使用 Object.defineProperty 的 getter 和 setter。 但是,Vue 3 将使用 ES2015 Proxy 作为其观察者机制。 这消除了以前存在的警告,使速度加倍,并节省了一半的内存开销。而为什么使用 Proxy 替代 Object.defineProperty?Proxy 可以劫持整个对象,并返回一个新的对象。Proxy 不仅可以代理对象,还可以代理数组,还可以代理动态增加的属性,节省内存,速度加倍。新增了hook api setup(), vue3重写虚拟DOM,新增静态标记优化插槽生成,静态树提升,静态属性提升。总结来说,vue 3 按需编译体积比2.0更小,性能也快1.2-2倍,它已经能做到Dom diff 的时候,只对有变量的区域遍历,静态的节点直接复用对象不需要 diff,更好的TS支持更先进的组件等等。。。
二、react16.X-react17
react16原理,babel-loader会预编译JSX为React.createElement(...)
react17原理,React 17中的 JSX 转换不会将 JSX 转换为 React.createElement,而是自动从 React 的 package 中引入新的入口函数并调用。另外此次升级不会改变 JSX 语法,旧的 JSX 转换也将继续工作。在React 17中,React将不再在后台的文档级别附加事件处理程序。取而代之的是,它将它们附加到渲染您的React树的根DOM容器:
const rootNode=document.getElementById('root');ReactDOM.render(, rootNode);
react hook :useState()、useEffect()、useRef()等等。。。是16.8以后新增的特性,他能让你在不使用class 组件的情况下也能用class组件的特性
三、angular
Angular对我来说也一直是停留在1.0,2.0的时代。如果你不是经常使用angular的话,当你重新关注它的时候,你会发现它的最新版本已经是Anguar 9了,要知道之前用了8年才发布了一个主版本,而现在4年时间已经发布了8个版本。是因为现在Angular采用了语义本版本控制,每个6个月就会升级一个大版本。Angular 是一个由 Google维护的开源JavaScript框架,用于在HTML和JavaScript中构建Web应用程序,Angular最显著的特征就是其整合性。涵盖了M、V、C/VM等各个层面,不需要组合、评估其它技术就能完成大部分前端开发任务。Angular一些用法再上一篇小结果过了,感兴趣可以看一看。在这里就不细说了,我本人用的少可能大部分api都需要参考文档。。。
四、3者的区别在哪呢?
Vue.js的特性如下:
1.轻量级的框架,易用
2.双向数据绑定
3.指令化
4.组件化
<1>、与angularjs的区别
相同点:
都支持指令:内置指令和自定义指令。
都支持过滤器:内置过滤器和自定义过滤器。
都支持双向数据绑定。
都不支持低端浏览器。
不同点:
1.更简单易用,AngularJS的学习成本高,比如增加了Dependency Injection特性,而Vue.js本身提供的API都比较简单、直观。
2.更灵活,比起 Angular更少专制,它能让你按照自己想要的方式构建应用,而非啥都的按照 Angular 框架如此。
3.性能更突出,vue依赖追踪的观察系统并且异步列队更新,所有的数据变化都是独立地触发。
<2>、与React的区别
相同点:
react采用特殊的JSX语法,Vue.js在组件开发中也推崇编写.vue特殊文件格式,对文件内容都有一些约定,
两者都需要编译后使用。
中心思想相同:一切都是组件,组件实例之间可以嵌套。
都提供合理的钩子函数,可以让开发者定制化地去处理需求。
都不内置列数AJAX,Route等功能到核心包,而是以插件的方式加载。
在组件开发中都支持mixins的特性。
不同点:
1.性能更好:
Vue性能上更有优势,因为 Vue 的 Virtual DOM 实现相对更为轻量一些,整体大小比react.js更小更轻便
2.更易学更简单:
react.JS 彩用SX语法,对语大部分工程师入手比较困难,需要要大量的时间去学习适应这种新语法的形式,vue采用DOM模板的方法,易看易用
3.优化更好:react某个组件的状态发生变化时,它会以该组件为根,重新渲染整个组件子树。如要避免不必要的子组件的重渲染,你需要在所有可能的地方使用 PureComponent,或是手动实现 shouldComponentUpdate 方法。vue都不用关心这些。