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/react@16/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@16/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中所有的变量是放在{}里面的