框架和库的区别:
1.库是将代码集合成的一个产品,供程序员调用。
面向对象的代码组织形式而成的库也叫类库。面向过程的代码组织形式而成的库叫函数库。在函数库中的可直接使用的函数叫库函数。此外还有UI组件库。
2.框架则是为解决一个(一类)问题而开发的产品。
框架用户一般只需要使用框架提供的类或函数,即可实现全部功能。
总结理解:
库,相当于是基于 框架 封装的一类的组件集合。
什么是中间件?
顾名思义就是在一个执行流程中间用的一个组件,截住过路的然后对其进行控制增强的操作来满足我们的需求。
react 中间件都是对 store.dispatch() 的增强。
React
React 就是纯粹写UI组件的,React 和 react-router, react-redux 结合起来才称得上框架,而React本身只是充当一个前端渲染的库而已。
React 的各种库都用过哪些:react-router 、redux 、react-redux 、echarts 、antd 、moment 、less 、AicGis 、highcharts
redux 的中间件:applyMiddleware 、redux-thunk 、redux-promise 、redux-saga
react 的高阶组件用过哪些:withRouter、connect、自己分装的
react 的脚手架:Create React App、dva、umi、ice
react 对比 vue 的优势:
- 更适合大型应用和更好的可测试性
- Web端和移动端原生 APP 通吃
- 更大的生态系统,更多的支持和好用的工具(搭配的router和redux以及其中间件包含了很多重要的思想)
- 比较适合中大型项目(便于测试和后续调试)
- 是一种在内存中描述 dom 树状态的数据结构
- 支持在服务端渲染
虚拟DOM
react (MVC模式:模型(model)-视图(view)-控制器(controller),单向响应数据流)和 vue (MVVM模式:Model-View-ViewModel,双向数据绑定原理)在设计中都使用了虚拟 DOM(Virtual DOM)。
为何使用虚拟 DOM ?
渲染用户界面的时候,dom 的操作成本是最高的,采用虚拟 DOM 是为了尽可能的减少对 dom 的操作。
虚拟DOM 为何能减少对 dom 的操作?
Virtual DOM 是一个映射真实 DOM 的 JavaScript 对象,如果需要改变任何元素的状态,那么是先在 Virtual DOM 上进行改变,而不是直接改变真实的 DOM 。
当有变化产生时,一个新的 Virtual DOM 对象会被创建并计算新旧 Virtual DOM 之间的差别。之后这些差别会应用在真实的 DOM 上。
改变真实的 DOM 状态远比改变一个 JavaScript 对象的花销要大得多。
部份内容来自:react和vue的渲染流程对比