微服务框架相关技术整理 (7)

Virtual DOM本质上就是在JSDOM之间做了一个缓存

可以类比CPU和硬盘,既然硬盘这么慢,我们就在它们之间加个缓存:既然 DOM 这么慢, 我们就在它们JS和DOM之间加个缓存.CPU(JS)只操作内存(Virtual DOM,最后的时候再 把变更写入硬盘(DOM)

在这里插入图片描述

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

//创建的就是一个简单的虚拟DOM对象 var element = React.createElement('h1', {id:'myTitle'}, 'hello');

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

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

创建虚拟DOM的2种方式

JSX方式

// jsx方式创建虚拟dom元素对象 const vDOM2 = <h3 id={myId.toUpperCase()}>{msg.toLowerCase()}</h3>

还有一种是纯JS,一般不使用:

// 纯JS方式 const msg = 'I like you'; const myId = 'atguigu'; const vDOM1 = React.createElement('h2',{id:myId},msg);

渲染虚拟DOM(元素)

语法: ReactDOM.render(virtualDOM,containerDOM)

作用: 将虚拟DOM元素渲染到真实容器DOM中显示

参数说明:

参数一: 纯js或jsx创建的虚拟DOM对象

参数二: 用来包含虚拟DOM元素的真实dom元素对象(一般是一个div)

// 渲染到真实的页面中 ReactDOM.render(vDOM1,document.getElementById('example1')); ReactDOM.render(vDOM2,document.getElementById('example2'));

使用示例:

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>02_JSX_DEMO</title> </head> <body> <ul> <li>A</li> <li>B</li> <li>C</li> </ul> <hr> <div></div> <div></div> <script src=""></script> <script src=""></script> <script src=""></script> <script type="text/babel"> /* 功能: 动态展示列表数据 */ /* 技术点: 1). 使用JSX创建虚拟DOM 2). React能自动遍历显示数组中所有的元素 3). array.map()的使用 */ //数据的数组 var names = ['Tom2', 'Jack2', 'Bob2']; //数据的数组——>标签数组 var lis = []; names.forEach((item,index)=>lis.push(<li key={index}>{item}</li>)); //创建虚拟的DOM const ul=<ul>{lis}</ul>; // 将虚拟的Dom渲染到页面中的某个DOM元素中 ReactDOM.render(ul,document.getElementById('example1')) const ul2 = <ul>{names.map((name,index)=><li key={index}>{name}</li>)}</ul> ReactDOM.render(ul2, document.getElementById('example2')) </script> </body> </html> React的组件

模块

什么是模块: 向外提供特定功能的js程序, 一般就是一个js文件

为什么要用模块: js代码越多越复杂了

使用模块的优势: 简化js的编写, 阅读, 提高运行效率

模块化: 当应用的js都以模块来编写的, 这个应用就是一个模块化的应用

组件

什么是组件: 用来实现特定功能效果的代码集合(html/css/js)

为什么要用组件: 单个界面的功能更复杂

使用组件的优势: 复用, 简化项目编码, 提高运行效率

组件化: 当应用是以多组件的方式实现功能, 这样应用就是一个组件化的应用

自定义组件:
1. 定义组件

1.工厂(无状态)函数(简单组件,推荐使用) // 方式一:工厂函数,推荐使用 function MyComponent() { return <h2>工厂函数</h2> } 2.ES6类语法 // 方式二:ES6类语法(复杂组件,推荐使用) class MyComponent2 extends React.Component{ render(){ return <h2>ES6的语法</h2> } }

2. 渲染组件标签

//语法规则 ReactDOM.render(<MyComponent/>, document.getElementById('example'));

注意

返回的组件类必须首字母大写

虚拟DOM元素必须只有一个根元素

虚拟DOM元素必须有结束标签

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsfpxd.html