001 React简介

[A] 基础介绍
      react是一个将数据渲染成html视图的JavaScript库(即帮助操作DOM呈现页面)

  开发人员
      由Facebook开发,且开源

  应用:
      目前react正在被腾讯,阿里等互联网大厂使用中...

  原生JavaScript的缺陷:
      1. 原生的JavaScript操作DOM繁琐,且效率低(即使用document提供的API去操作UI)
      2. 使用原生的JavaScript直接操作DOM,会引起浏览器大量的重排和重绘
      3. 原生JavaScript没有组件化的编码方案,低吗复用率低

  react的特点:
      1. 采用组件化模式,声明式编码,提高开发效率及组件复用率
      2. 在react Native中可以使用React语法进行移动端开发
      3. 使用 虚拟DOM + 优秀的Diffing算法,尽量减少与真实DOM的交互
 
[B] react基本使用
  下载依赖包:
    react.development.js
        react的核心库
    react-dom.js
        提供操作DOM的react拓展库
    babel.min.js
        即提供babel功能,实现
            ES6 => ES5
            import => require
            js => jsx
    prop-type.js
        为react类组件状态提供类型约束

  html引入jsx:
    顺序:
      1. 引入react核心库
      2. 引入react-dom,用于支持react操作dom
      3. 引用babel.js,用于将jsx转化为js
    开发:script标签需标注type="text/babel"
      1. 创建虚拟DOM
         const Vdom = <div>hello world</div>
      2. 渲染虚拟DOM到页面
        ReactDOM.render(Vdom, document.getElementById('box'))

  html引入js:
    顺序:
      1. 引入react核心库
      2. 引入react-dom,用于支持react操作dom
      // 不再需要babel.js,因为直接写的就是js
    开发:script标签需标注type="text/javascript"
      1. 创建虚拟DOM
        const Vdom = React.createElement('div', { id: 'box'}, 'hello, world')
      2. 渲染虚拟DOM到页面
        ReactDOM.render(Vdom, document.getElementById('box'))

   注:
    而实际上,开发人员写的jsx,会首先转化成js,再去执行的
 
[C] 关于react的虚拟dom
  1. react创建的虚拟DOM,就是一个普普通通的js对象
  2. 虚拟DOM比较"轻",因为虚拟dom在react内部使用,无序真实dom上那么多属性
  3. 虚拟dom最终会被react转化成真实的dom,呈现在页面上
 
 [D] JSX语法
  简介:
    1. 全称javascriptXML
    2. react定义的是一种js拓展语法:js + xml
    3. 本质上是React.createElement(component, props, ...child)方法的语法糖
    4. 作用:用来简化创建虚拟dom的过程
      1. 写法:
        var Vdom = <div>content</div>
      2. 注意1:
        这不是一个字符串,而是一个html/xml标签
      3. 注意2:
        它最终会被转化成一个js对象
    5. 标签名可以是html标签,也可以是自定义标签

  语法规则:
    1. 定义虚拟dom时,写的是html元素,不应放在引号内
    2. 标签中写入js表达式时,应放在{}中,表示引用js
      注意:
        这里是js表达式才能放在{}中,而不是js语句
        表达式:
          一个表达式计算出来就是一个值,可以放在任何需要值的地方
          (1) 100
          (2) a + b
          (3) demo(1)
          (4) arr.map()
          (5) function() {}
        语句:
          js可执行语句,其执行结果可以是一个值,也可以没有任何值
          (1) if() {}
          (2) for() {}
          (3) switch() {case: xxx}
    3. 标签中引用class样式时,应用className="box"
    4. 标签中引入style样式时,需放在{}中,写入一个对象
      style={{color: 'red'}}
      外层的{}表示将内部的语句当做js去解析。内部的{}为对象的{}
    5. 虚拟DOM必须只有一个根标签
    6. 关于标签首字母:
      (1) 若小写字母开头,则将标签改为html同名标签,若html中无对应的同名标签,则警告
      (2) 若大写字母开头,则react将去渲染对应的自定义组件,若没找到对应的组件,则报错
 
 
posted @ 2022-10-10 16:39  CarreyB  阅读(24)  评论(0编辑  收藏  举报