1、起源于Facebook,2013年开源。

2、特点:

声明试设计(声明试是告诉计算机做什么,不管他怎么做,命令式是告诉计算机怎么做)。

高效:通过虚拟Dom,最大程度上减少真实Dom的交互。

灵活:约束小,可与已知的库和框架很好的配合。

JSX:js语法的扩展。

组件:通过面向对象使组件得到复用。

单向数据流:子集不能修改父集传过来的参数。

3:虚拟Dom:一个真实的JS对象,由于直接操作Dom就会发生回流,成本过高。

4:回流与重绘:

回流:当render树中的一部分或者全部因为大小距离等问题改变而需要重建的过程。

重绘:当元素的一部分属性发生变化,如外观背景,不会引起布局变化而需要重新渲染的过程。

回流必能引起重绘,重归不一定能引起回流。

5、浏览器如何渲染页面:

HTML解析器,解析HTML结构,生成Dom树。

Css解析器,解析CSS的内链样式,生成样式表。

讲Dom树和样式表结合,生成Render树(每个Dom元素都有一个方法用来接收样式表信息,返回一个render对象,render对象编译生成render树)。

render树渲染完毕后浏览器会根据样式表来决定页面的位置。

6:专注视图层:专注提供清晰简介的View解决方案

注:vue和react本质是VC框架,配合第三方包(如Vuex)才是MVC框架。

7:函数化编程:结构化编程的一种

主要思想:把问题的解决方案写成一系列嵌套的函数调用

纯函数:作用与相同的输入,永远会得到相同的输出,没有任何可观察的副作用,也不会依赖外部环境的状态。

eg:Array.slice(不改变原数组)     纯函数

  Array.splice(改变原数组)       不是纯函数

优点:有效降低系统的复杂性,可缓存性

柯里化函数:传递给函数的一部分用来调用他,让他返回一个函数去处理 剩下的参数

eg: var add=(x+y)=>x+y    柯里化函

   var add=(a)=>(b)=>a+b;add(3)(2)//5

是一种预加载函数的方法,通过传递较少的参数,得到一个已经记住了这些参数的新函数,是一种对参数的缓存。

函数组合:为了解决函数嵌套问题[Fn(g(f(x))],需要用到函数组合。

var compose =(f,g)={x=>f(g(x))}

函数化编程的优点:代码简介,开发快速。    接近自然语言,易于理解 。    更方便代码管理。   易于并发编程      代码的热升级

8、vue与react的区别:

相同点:都使用的虚拟Dom

    都提供了响应式和组件化的视图组件。

    讲注意力集中保持在核心库,其他功能如路由和全局状态管理交给其他库。

不同点:优化性方面,react有自己的一套东西,shouldComponentUpdate用来减少一些不必要的虚拟Dom对比。

    react用的是JSX语法,而Vue是将html,js,css放到Vue文件里。

    react的css是写在单独的文件里,vue是写在vue文件里

    react约束性小,灵活性大,使用原生JS较多,适合开发大型项目,vue灵活性小,约束性大(指令等)适合快速开发项目

 

版权声明:本文为yuezengxu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/yuezengxu/p/10106478.html