react特点和创建虚拟DOM

react:用于构建用户界面的JavaScript库

特点:

1.声明式(只需要更新数据,不需要操作DOM,页面就会变化)

2.组件化(页面简化,方便维护)

3.一次学习,随处编写(ReactNative,可以运用在手机上,包括安卓和ios,既可以写浏览器端也可以写服务器端)

4.高效(虚拟dom:不总是直接操作DOM 和 dom diff:最小化页面重绘)

5.单项数据流

注意:react高效的原因:

 相关js库:

react.js:React的核心库

react-dom.js:提供操作DOM的react扩展库

babel.min.js:解析jsx语法代码转为纯js语法代码的库

实现一个小案例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <script src="../js/react.development.js"></script>
  <script src="../js/react-dom.development.js"></script>
  <script src="../js/babel.min.js"></script>
  <script type="text/babel">
    //1.创建虚拟DOM元素对象
    var vDom = <h1>hello world!</h1>   //不是字符串,这是jsx语法
    //2.将虚拟DOM元素对象渲染到页面真实DOM容器中
    ReactDOM.render(vDom,document.getElementById("test"))
  </script>
</head>
<body>
<div id="test"></div>
</body>
</html>

虚拟Dom:

1.React提供了一些API来创建一种特别的js对象

  var element=React.createElement(‘h1‘,{id:‘my Title‘},‘hello‘)

  这就是一个简单的虚拟DOM对象

2.虚拟dom对象最终都会被React转换为真实的DOM

3.我们编码时基本只需要操作react的虚拟DOM相关数据,react会转换为真实的DOM变化而更新界面

实现第二个小案例:

实现下面的效果:

<div id="keep calm and carry on">
    <h2>ATGUIGU</h2>
</div>
<div id="KEEP CLAM AND CARRY ON">
    <h3>atguigu</h3>
</div>
//代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="test1"></div>
<div id="test2"></div>
<script src="https://unpkg.com/[email protected]/umd/react.development.js"></script>
<script src="https://unpkg.com/[email protected]/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<script>
    const msg=‘Keep Calm and Carry On‘;
    const myId=‘Atguigu‘;
    //第一种方法:本质方法
    const vDom1=React.createElement(‘h2‘,{id:myId.toLowerCase()},msg.toUpperCase()); //    虚拟dom             标签       id名称                标签里面的内容
    ReactDOM.render(vDom1,documentById(‘test1‘))  //         将虚拟DOM:vDom1渲染到test1中
</script>

<script type="text/babel">
    //第二种方法:书写简单
    const vDom2=<h3 id={myId.toUpperCase()}>{msg.toLowerCase()}</h3>;
    ReactDOM.render(vDom2,documentById(‘test2‘))
</script>
</body>
</html>
//注意:react中所有的变量是放在{}里面的

原文地址:https://www.cnblogs.com/czh64/p/12091651.html

时间: 2024-12-12 07:44:01

react特点和创建虚拟DOM的相关文章

React会自动把虚拟DOM数组展开

React会自动把虚拟DOM数组展开,放在父级虚拟DOM中,这个特性还是我同事帮我解决一个问题的时候,偶然发现的. 如何将一个数据数组转换为一个虚拟DOM的数组,需要使用map,如下: const names = ['jquery', 'zepto', 'vue', 'angular', 'react', 'hooks']; const ul = ( <ul> { names.map((item, key) => <li key={key}>{item}</li>

React入门-JSX和虚拟dom

1.JSX理解 举例: const element = <h1>Hello, world!</h1>; 这被称为 JSX,是一个 JavaScript 的语法扩展.建议在 React 中配合使用 JSX,JSX 可以生成 React “元素”,而且JSX 可以很好地描述 UI 应该呈现出它应有交互的本质形式.JSX 可能会使人联想到模版语言,但它具有 JavaScript 的全部功能. 为什么用JSX? React 认为渲染逻辑本质上与其他 UI 逻辑内在耦合,比如,在 UI 中需

深入理解react中的虚拟DOM、diff算法

文章结构: React中的虚拟DOM是什么? 虚拟DOM的简单实现(diff算法) 虚拟DOM的内部工作原理 React中的虚拟DOM与Vue中的虚拟DOM比较 React中的虚拟DOM是什么?   虽然React中的虚拟DOM很好用,但是这是一个无心插柳的结果.   React的核心思想:一个Component拯救世界,忘掉烦恼,从此不再操心界面. 1. Virtual Dom快,有两个前提 1.1 Javascript很快  Chrome刚出来的时候,在Chrome里跑Javascript非

react虚拟dom与diff算法

react拥有极速渲染的特点,这个特点依靠的就是react的虚拟dom和diff算法 对比两个图就可以发现标准dom机制下,用户在应用上的操作是直接对真实dom进行操作的,在react中我们操作 的是虚拟dom,用户的操作产生的数据改变或者state变量改变,都会保存到虚拟dom上,之后再批量的对这些更 改进行diff算法计算,对比操作前后的虚拟dom树,把更改后的变化再同步到真实dom上 虚拟DOM的原理: React会在内存中维护一个虚拟DOM树,对这个树进行读或写,实际上是对虚拟DOM进行

vue----核心虚拟dom

一.真实DOM和其解析流程? 浏览器渲染引擎工作流程都差不多,大致分为5步,创建DOM树——创建StyleRules——创建Render树——布局Layout——绘制Painting 第一步,用HTML分析器,分析HTML元素,构建一颗DOM树(标记化和树构建). 第二步,用CSS分析器,分析CSS文件和元素上的inline样式,生成页面的样式表. 第三步,将DOM树和样式表,关联起来,构建一颗Render树(这一过程又称为Attachment).每个DOM节点都有attach方法,接受样式信息

虚拟DOM介绍

[转自]:https://www.jianshu.com/p/616999666920 为什么需要虚拟DOM 先介绍浏览器加载一个HTML文件需要做哪些事,帮助我们理解为什么我们需要虚拟DOM.webkit引擎的处理流程,一图胜千言: 所有浏览器的引擎工作流程都差不多,如上图大致分5步:创建DOM tree –> 创建Style Rules -> 构建Render tree -> 布局Layout –> 绘制Painting 第一步,用HTML分析器,分析HTML元素,构建一颗DO

16_虚拟dom和dom diff算法

虚拟dom的作用:是为了减少操作真实的dom 初始化显示界面的过程: 1.创建虚拟dom树——>真实dom树——>绘制页面显示 更新界面的过程: 2.绘制页面显示——>setState()更新状态——>重新创建虚拟dom树——>新/旧 dom树比较差异——>更新对应差异真实 dom树——>局部页面重绘(批量更新) diff算法是用:判断哪个区域需要更新,减小更新的区域 更新对应差异真实dom树用到了diff算法 原文地址:https://www.cnblogs.c

【理论知识学习】虚拟DOM节点

React非常快速是因为它从不直接操作DOM. 虚拟DOM是在DOM的基础上建立了一个抽象层,对数据和状态所做的任何改动,都会被自动且高效的同步到虚拟DOM,最后再批量同步到DOM中. 在React中,render执行的结果得到的并不是真正的DOM节点,而仅仅是JavaScript对象,称之为虚拟DOM. 虚拟DOM具有批处理和高效的Diff算法,可以无需担心性能问题而随时“刷新”整个页面,因为虚拟DOM可以确保只对界面上真正变化的部分进行实际的DOM操作. 在实际开发中无需关心虚拟DOM是如何

React虚拟DOM浅析

转帖: http://www.alloyteam.com/2015/10/react-virtual-analysis-of-the-dom/?hmsr=toutiao.io&bsh_bid=928783684 在Web开发中,需要将数据的变化实时反映到UI上,这时就需要对DOM进行操作,但是复杂或频繁的DOM操作通常是性能瓶颈产生的原因,为此,React引入了虚拟DOM(Virtual DOM)的机制. 什么是虚拟DOM? 虚拟DOM VS 直接操作原生DOM? 虚拟DOM VS MVVM?