框架和库的区别
librart(库):小而巧的库(jq),可以很方便的从一个库切换到另外一个库,代码改动很小
Framework(框架):大而全的是框架;框架提供了一整套的解决方案;所以,如果在项目中间,想切换另外的框架,代价很大(比如项目是用vue开发,到后面想切换到react)
react起源
React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设Instagram 的网站。做出来以后,发现这套东西很好用,就在2013年5月开源了。由于 React 的设计思想极其独特,属于革命性创新,性能出众,代码逻辑却非常简单。所以,越来越多的人开始关注和使用,认为它可能是将来 Web 开发的主流工具。
react特点
-
声明式设计:React采用声明范式,可以轻松描述应用。
-
高效:React通过对DOM的模拟,最大限度地减少与DOM的交互。
-
灵活:React可以与已知的库或框架很好地配合。
react、vue、angular三大框架比较
angular:是一个比较早的框架,学习曲线也不友好,ng1学习起来比较麻烦,ng2开始进行了改革,也提出了组件化开发的概念,并且可结合TypeScript使用。
vue:目前最火的框架,是华人尤雨溪开发,学习曲线比较友好,上手很快,文档很赞
react:目前最流行的框架
三大框架相同点
都是操作虚拟DOM(真实的dom,转换js对象树),都支持组件化开发
三大框架不同点
vue 控制器:无;过滤器 :有;指令:有;渲染指令: 有;数据绑定:双向;
React 控制器:无;过滤器 :无 ;指令:无;渲染指令 : 无 ;数据绑定:单向;
angular 控制器:有;过滤器 :有 ;指令:有;渲染指令 : 有 ;数据绑定:双向;
react和vue详细对比:
Vue的优势包括:
- 模板和渲染函数的弹性选择
- 简单的语法及项目创建
- 更快的渲染速度和更小的体积
React的优势包括:
- 更适用于大型应用和更好的可测试性
- 同时适用于Web端和原生App
- 更大的生态圈带来的更多支持和工具
react和vue相同之处
- 利用虚拟DOM实现快速渲染
- 轻量级
- 响应式组件
- 服务器端渲染
- 易于集成路由工具,打包工具以及状态管理工具
- 优秀的支持和社区
总结比较速览
| 特点 | VUE | React |
|---|---|---|
| 组件引用 | 分为全局注册和局部注册。 | 通过import相应组件,然后模版中引用。 |
| 数据流 | 1.父组件通过传递props来更新子组件视图,显示地调用props选项来声明它期待获得的数据。 2.vue是数据可变的,双向绑定,声明式的写法,vue组件的横向拆分很多情况下用mixin。 |
1.官方建议props要像纯函数那样,输入输出一致对应,而且不太建议通过props来更改视图。 2.react是整体的思路的就是函数式,所以推崇纯组件,数据不可变,单向数据流,当然需要双向的地方也可以做到,比如结合redux-form,组件的横向拆分一般是通过高阶组件。 |
| 模版 | 有自己的vue文件 | jsx语法 |
| 状态管理 | 1.state对象并不是必须的,数据由data属性在Vue对象中进行管理。 2.非父子组件之间嵌套过深的时候状态管理可引用vuex。 |
1.在react中是关键的概念,它是不可变的,在React中你需要使用setState()方法去更新状态。 2.非父子组件之间嵌套过深的时候状态管理可引用react-redux。 |
| 事件 | 1.每个Vue实例都实现了事件接口,方便父子组件通信,小型项目中不需要引入状态管理机制。 2.Vue增加的语法糖computed和watch |
1.必须自己实现事件。 2.只能使用JSX语法写一套逻辑来实现。 |
| 状态管理 | 1.state对象并不是必须的,数据由data属性在Vue对象中进行管理。 2.非父子组件之间嵌套过深的时候状态管理可引用vuex。 |
1.在react中是关键的概念,它是不可变的,在React中你需要使用setState()方法去更新状态。 2.非父子组件之间嵌套过深的时候状态管理可引用react-redux。 |
| 维护 | 由google前员工尤雨溪个人维护。 | 由facebook维护。 |
| 学习曲线 | 学习曲线平缓,内部封装很多语法糖 | 学习曲线稍复杂,更灵活 |
| 使用场景 | 1.高级web单页面; 2.APP混合开发(阿里开源weex); 3.微信小程序开发(美团开源mpvue、网易考拉开源megalo); 4.结合electron开发桌面程序。 |
1.高级web页面; 2.APP混合开发(facebook开源react-native); 3.微信小程序(京东开源taro); 4.可结合electron开发桌面程序。 |
| UI生态 | 1.pc端:iview、element等; 2.h5端:有赞vant、mintui等; 3.混合开发:weexui,bui-weex; 4.微信小程序:iView Weapp、zanui; |
1.pc端:Ant Design、Material-UI等; 2.h5端:Ant Design Mobile、weui等; 3.混合开发:teaset,react-native-elements; 4.微信小程序:iView Weapp、Taro UI; |