1、react是什么
    react是用于构建用户界面(视图)的JavaScript库。(官方文档)
    react是一个将数据渲染为HTML视图的开源JavaScript库。(由Facebook开发,且开源的-2013年5月宣布开源)
    2.为啥要学?
    1.原生JavaScript(或者jq)操作dom繁琐、效率低(dom-Api 操作ui)频繁操作dom浏览器会频繁的重绘和排列.
    2.使用JavaScript直接操作dom,浏览器会进行1大量重绘和重排。
    3.原生JavaScript 没有组件化的编码方案,代码复用率低。

    3.React的特点
    1.采用组件化模式、声明式编码,提高开发效率及组件复用率。
    2.在React Native中可以使用React语法进行移动端开发。
    3.使用虚拟dom和diffing算法,尽量减少与真实dom的交互·。
    (react 第一次渲染更好性能 首先jsx会将数据转换成虚拟的dom,然后在转换成真实的dom渲染到页面中 跟原生比较 当数据发生变化的,首先原来的虚拟dom先保存下来,然后数据改变的时候,会进行虚拟dom的比较,发现相同一样的不会生成虚拟dom,只要不同的时候才会生成虚拟dom,当数据量特别大的时候,性能特别明显)

    说明:react高效的原因:使用虚拟dom,不总是直接操作页面真实dom,diff算法进行比较,最小化页面重绘。

    1. 问题1:在jsx中的虚拟dom的添加行内样式(未解决)
    2. const dom =<h1 style={color:red}>hello</h1>
    3. 问题2:在jsx中我先渲染虚拟dom,再定义虚拟dom(为啥没有报错呢)---const存在变量的提升
    4. ReactDOM.render(dom,document.getElementById("test"))
    5. const dom =<h1> 你好,好莱坞</h1>

    为啥用jsx,虚拟dom是什么呢

    1. js创建虚拟dom太过于繁琐了,jsx创建虚拟dom 比较简单快捷。特别嵌套比较深的时候效果更加明显
    2. 关于虚拟dom:1.本质是object类型的对象(一般对象)2.虚拟dom比较‘轻‘,真实dom比较重,因为虚拟dom是
    3. react内部在用,无需真实dom上那么多的属性。3.虚拟dom最终会被react转化成真实dom,呈现在页面上(创建出来的dom都是在内存中)
    4. //js 创建虚拟dom
    5. const vdom=React.createElement('h1',{id:titile},'helloworld')
    6. //jsx 创建虚拟dom
    7. const vdom=<h1>helloworld</h1> jsx会自动转换成上面的格式,无需我们转换