当前位置: 首页 > article >正文

html,js,react三种方法编写helloworld理解virtual dom

学习任何一个新语言,好像都从helloworld开始。:)。

html helloworld

静态hello world

<!DOCTYPE html>
<html>
<head>
    <title>Hello World</title>
</head>
<body>
    <p>Hello World</p>
</body>
</html>

js helloworld

需要等待10s的动态hello world

<!DOCTYPE html>
<html>
<head>
    <title>Hello World</title>
</head>
<body>
    <script>
        // JavaScript代码开始
        console.log('开始等待10秒...');

        setTimeout(function() {
          console.log('10秒过去了!');
          document.write("Hello World");
        }, 10000);

        // JavaScript代码结束
    </script>
</body>
</html>

react helloworld

需要等待10s的动态hello world

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>React Hello World</title>
    <!-- 引入React和ReactDOM库 -->
    <script src="https://unpkg.com/react@18/umd/react.development.js"></script>
    <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
</head>
<body>
    <!-- React组件的容器 -->
    <div id="root"></div>

    <script>
        // 使用React.createElement创建React元素
        const element = React.createElement(
            'h1',
            null,
            'Hello World'
        );

        // 将React元素渲染到页面上
        setTimeout(function(){
          ReactDOM.render(element, document.getElementById('root'));
          console.log('10秒过去了!');
        }, 10000);
    </script>
</body>
</html>

从helloworld到helloworld!

html需要更改定义的标签内容。

<p>Hello World!</p>

js需要更改dom

document.write("Hello World!");

reactjs需要更改element

                                            
const element = React.createElement(
    'h1',
     null,
     'Hello World!'
);

vitural dom

我们从以上react的程序里看到,react创建了element然后渲染。

这里的element不是真正的dom。document.getElement获取的是真实的dom和react创建的不是一个。真正的ui界面功能很富足,如果每次所有元素都重新加载真实的dom性能很低,而有些程序仅仅变动的是界面的某些数值,完全重新加载dom就显得很笨重。

vitural dom是javascript提出的概念,而不是react特有,react很好的利用该概念。

vitural dom是在本地的内存虚拟个dom,当js/react组件或者属性发生变化时,js/react重建dom, 然后diff新旧dom的区别,将差异应用到真实的dom,实现ui的更新。

从helloworld到helloworld!,react只更新了一个element,如果真实界面上很多element,真实的dom其他的element就不会受影响,ui仅更新该element的属性,效率很高。


http://www.kler.cn/a/321770.html

相关文章:

  • Spring——事务
  • 基于yolov8、yolov5的鱼类检测识别系统(含UI界面、训练好的模型、Python代码、数据集)
  • 3D编辑器教程:如何实现3D模型多材质定制效果?
  • 群控系统服务端开发模式-应用开发-前端个人信息功能
  • androidstudio下载gradle慢
  • 基于标签相关性的多标签学习
  • 【重学 MySQL】三十九、Having 的使用
  • 地平线静态目标检测 MapTR 参考算法-V1.0
  • 手写WBXslider 组件 (标签为微博小程序,需要改成对应的标签,或方法)
  • 80%的程序员当不了架构师?那考软考作用在哪?
  • AI驱动TDSQL-C Serverless 数据库技术实战营-融合智能体与TDSQL-C技术,高效实现二手房数据查询与分析应用
  • python中ocr图片文字识别样例(一)
  • 5. 高阶函数
  • 使用Postman搞定各种接口token实战
  • 3ds Max建模方式介绍
  • AOT源码解析4.5-AOT整体结构
  • UE学习篇ContentExample解读-----------Blueprint_Mouse_Interaction
  • postman发送与返回,GET与POST使用
  • 【架构】NewSQL
  • 初识C#(三)- 数组
  • 实战篇 | Homebrew 安装使用(Ubuntu 完整实操版)
  • Vue2配置环境变量的注意事项
  • SpringCloud Gateway 打印请求响应日志、跨域全局配置
  • LASSO回归(L1回归L1正则化)举例说明:正则化项使不重要的特征系数逐渐为零0的过程
  • 住宅ip有什么特殊点
  • 移动技术开发:HandlerAsyncTask