• 一、react简介


    目标

    1. 理解react这个框架在前端开发中的地位
    2. 理解react诞生的原因和意义(react是一个用于快速构建前端视图的javaScript库)
    3. 理解什么是虚拟dom、原生js模拟出虚拟dom的表示,模拟出创建虚拟dom的方法,模拟出虚拟dom转换成真实dom的方法。
    4. 认识react中虚拟dom的表示,创建虚拟dom的方法,如何把虚拟dom渲染为真实dom。
    5. 什么是jsx,为什么要用jsx,jsx的语法细节什么怎么样的。
    6. 搭建react开发环境,并且使用react的方式去构建简单视图。

    知识点

    1. react由facebook公司推出,因为该公司不满足于市面上现有的前端框架,他们认为MVC只会让前端越来越复杂,因此react就诞生了,react只关注与视图层,官方对react的定位是:一个快速构建前端视图的javaScript库。

    2. 虚拟dom是一个用于表示真实dom节点的javaScript对象。

    假设有一个html标签如下:

    <div id="box" class="box">hello world</div>
    

    那么其真实dom的表示方法为

    1. var oBox = document.getElementById('box');
    2. // oBox就是真实dom节点,其本质也是一个对象,只是该对象有很多的属性,操作起来是昂贵的。

    其虚拟dom的表示方法为

    1. var vBox = {
    2. tagName: 'div',
    3. props: {
    4. id: 'box',
    5. class: 'box'
    6. },
    7. children: ['hello world']
    8. }
    9. // vBox其实就是虚拟dom,是我们用原生的Object对象去描述一个真实dom节点的方式,该对象只有标签的一些关键属性。

    1. 封装一个可以生成虚拟dom的方法,可参考如下写法
    1. // 生成虚拟dom
    2. function createVdom(tagName, props, children){
    3. const VDom = {
    4. tagName,
    5. props,
    6. children
    7. }
    8. return VDom;
    9. }

    1. 封装一个转换虚拟dom为真实dom的方法,课参考如下:
    1. // 把虚拟dom转换成真实dom
    2. function creatRdom(vDom){
    3. const { tagName, props, children } = vDom;
    4. // 创建出真实dom节点
    5. const rDom = document.createElement(tagName);
    6. // 给节点添加属性
    7. if(props){
    8. Object.keys(props).forEach(item => {
    9. rDom.setAttribute(item, props[item]);
    10. })
    11. }
    12. // 遍历children
    13. children.forEach(item => {
    14. if(typeof item === 'string'){
    15. const text = document.createTextNode(item);
    16. rDom.appendChild(text);
    17. }else{
    18. rDom.appendChild(creatRdom(item))
    19. }
    20. });
    21. return rDom;
    22. }

    1. 使用create-react-app搭建react开发环境,并查看react中如何表示虚拟dom。react中表示虚拟dom的形式如下:

    1. React.createElement的书写方式太复杂所以引入jsx语法,jsx语法可以很好的表示虚拟dom,但是jsx毕竟不是合法的js语言,所以jsx语法最后都会被babel转换成合法js语法。

    1. react中引入静态资源(css、图片),其实是webpack使用对应的loader加载了资源,并进行了打包。

    2. jsx的语法规则为遇到<则以虚拟dom的方式解析,遇到{则以js的方式解析。其中{}中应该出现标准js的语法(有值的表达式),其中的值可以是 数字、字符串、null、布尔、undefined 或者react元素(虚拟dom),如果是数组的话,则会自动的把数组中的元素展开。

    3. React.createElement这个方法的三个参数

    1. React.createElement(param1,param2,param3)
    2. param1 string | React组件
    3. param2 Object 组件上的属性
    4. param3 Array 组件的子元素

    1. ReactDOM.render这个方法的三个参数
    1. ReactDOM.render(param1, param2, param3)
    2. param1 Object 组件
    3. param2 Dom 要挂载的dom节点
    4. param3 Function 真实dom结构渲染成功后的回调函数

    授课思路

  • 相关阅读:
    国内领先的五大API接口供应商
    TCP & UDP
    IDEA中安装Docker插件实现远程访问Docker
    【Spring】纯注解开发模式简直就是Spring中的Spring
    Docker安装Redis 7.x单机模式
    JAVA 浏览器下载excel,自定义样式:合并单元格,设置多种背景填充颜色,冻结窗格
    信息学奥赛一本通:2033:【例4.19】阶乘之和
    HUDI(搭建详细记录附加jar)
    el-table(vue2中)滚动条被固定列盖住
    代码随想录训练营二刷第五十二天 | 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV
  • 原文地址:https://blog.csdn.net/weixin_45311714/article/details/127889389