虚拟DOM和真实DOM&JSX语法规则

193 阅读1分钟

「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战

虚拟DOM和真实DOM

  • 虚拟DOM本质是一个object对象
  • 虚拟dom比较轻真实dom比较重,因为虚拟dom的react内部在用,没有真实dom那么多属性
  • 虚拟dom最后要变成真实dom渲染在页面上
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello_react</title>
</head>
<body>  
    <!-- 准备好一个容器 -->
  <div id = "test"> </div>
  <div id = "demo"> </div>
    <!-- 引入react核心库 -->
    <script type="text/javascript" src="../js/react.development.js"></script>
    <!-- 引入dom,用于支持react操作dom -->
    <script type="text/javascript" src="../js/react-dom.development.js"></script>
    <!-- 引入babel,用于将jsx转换为js -->
    <script type="text/javascript" src="../js/babel.min.js"></script>
    <!-- 此处要写bable  -->
    <script type="text/babel" >   
        // 1.创建虚拟DOM 
       const VDOM = <h1>
        <span>hello react</span>
        </h1>
       // 2.将虚拟DOM渲染到页面 
      
        ReactDOM.render(VDOM,document.getElementById('test'))
       const TDOM = document.getElementById('demo')
        console.log("虚拟DOM"+VDOM)
        console.log("真实DOM:"+TDOM)
        console.log(TDOM)
        console.log(typeof VDOM)
        debugger
    </script></body>
</html>

JSX语法规则

1.定义虚拟DOM时不要写引号

2.如果要使用js表达式要加{}

image-20220103155726177

3.样式的类名指定不要用class,要用className

image-20220103160246533

4.内联样式,要使用style = {{key:value的形式去写}}

image-20220103160957447

5.只有一个根标签

image-20220103160711461

6.标签必须闭合

7.标签首字母

(1)若首字母小写,则会转换为对应的html标签,如果找不到则报错

(2)若首字母大写,则会去找对应的组件进行渲染,如果找不到则报错

image-20220103154238450

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello_react</title>
    <style>
        .title{
            background-color: blue;
        }
    </style>
</head>
<body>  
    <!-- 准备好一个容器 -->
  <div id = "test"> </div>
  <div id = "demo"> </div>
    <!-- 引入react核心库 -->
    <script type="text/javascript" src="../js/react.development.js"></script>
    <!-- 引入dom,用于支持react操作dom -->
    <script type="text/javascript" src="../js/react-dom.development.js"></script>
    <!-- 引入babel,用于将jsx转换为js -->
    <script type="text/javascript" src="../js/babel.min.js"></script>
    <!-- 此处要写bable  -->
​
​
    <script type="text/babel" >  
     const  apple = 'apple is sweet'
       const VDOM =(
        <div>
            <h1>
        <span className ="title" style ={{fontSize:'200px'}}>{apple}</span>
                          </h1>
         <input/>
            </div>
       )
     
        ReactDOM.render(VDOM,document.getElementById('test'))
​
    </script>
​
​
</body>
</html>