React全家桶day01
- React:用于构建用户界面的JavaScript库(是一个将数据渲染为HTML视图的开源JAvaScipt库)
1、发送请求获取数据
2、处理数据(过滤、整理格式等) - React特点:
1、采用组件化模式、声明式编码,提高开发效率级组件复用率
2、在React Native中可以使用React语法进行移动端开发。
3、使用虚拟DOM+优秀的Diffng算法,尽量减少与真实DOM的交互。 - React高效的原因
1、使用虚拟DOM不总式直接操作页面真实DOM
2、DOM Diffing算法,最小化页面重绘 - 小练习
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello_React</title>
</head>
<body>
<!-- 准备容器 -->
<div id="test"></div>
<!-- 引入React核心库 -->
<script type="text/javascript" src="../js/react.development.js"></script>
<!-- 引入react-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>
<script type="text/babel">
const VDOM=<h1>Hello</h1>
ReactDOM.render(VDOM,document.getElementById('test'))
</script>
</body>
</html>
注意事项:
1、先导入准备容器。
2、引入React核心库
3、引入react-Dom,用于支持React操作Dom
4、引入Babel,用于将JSX转为JS (注意:顺序不能乱)
5、ReactDOM:DOM必须是大写
Jsx语法规则:
1、定义虚拟DOM时,不要写引号
2、标签中混入JS表达式时要用{}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello_React</title>
<style>
.title {
background-color: coral;
width: 200px;
}
</style>
</head>
<body>
<!-- 准备容器 -->
<div id="test"></div>
<!-- 引入React核心库 -->
<script type="text/javascript" src="../js/react.development.js"></script>
<!-- 引入react-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>
<script type="text/babel">
const Myid="LMF"
const MyData="Hello.React"
// 创建虚拟DOM
const VDOM=<h1 id={Myid}>
<span>{MyData}</span></h1>
// 渲染虚拟DOM
ReactDOM.render(VDOM,document.getElementById('test'))
</script>
</body>
</html>
3、样式的类名指定不要用Class,要用ClassName
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello_React</title>
<style>
.title {
background-color: coral;
width: 200px;
}
</style>
</head>
<body>
<!-- 准备容器 -->
<div id="test"></div>
<!-- 引入React核心库 -->
<script type="text/javascript" src="../js/react.development.js"></script>
<!-- 引入react-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>
<script type="text/babel">
// 创建虚拟DOM
const VDOM=<h1 className="title" id="Lmf">
<span>Hello_React</span>
</h1>
// 渲染虚拟DOM
ReactDOM.render(VDOM,document.getElementById('test'))
</script>
</body>
</html>
4、内联样式,要用style={key:value}的形式去写
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello_React</title>
<style>
.title {
background-color: coral;
width: 200px;
}
</style>
</head>
<body>
<!-- 准备容器 -->
<div id="test"></div>
<!-- 引入React核心库 -->
<script type="text/javascript" src="../js/react.development.js"></script>
<!-- 引入react-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>
<script type="text/babel">
const Myid="LMF"
const MyData="Hello.React"
// 创建虚拟DOM
const VDOM=<h1 className='title' id={Myid}>
<span style={{color:'white',fonSize:'29px'}}>{MyData}</span></h1>
// 渲染虚拟DOM
ReactDOM.render(VDOM,document.getElementById('test'))
</script>
</body>
</html>
5、只有一个跟标签,标签必须闭合
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello_React</title>
<style>
.title {
background-color: coral;
width: 200px;
}
</style>
</head>
<body>
<!-- 准备容器 -->
<div id="test"></div>
<!-- 引入React核心库 -->
<script type="text/javascript" src="../js/react.development.js"></script>
<!-- 引入react-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>
<script type="text/babel">
const Myid="LMF"
const MyData="Hello.React"
// 创建虚拟DOM
const VDOM=
<div>
<h1 className='title' id={Myid}>
<span style={{color:'white',fonSize:'29px'}}>
{MyData}
</span>
</h1>
<h1 className='title' id={Myid}>
<span style={{color:'white',fonSize:'29px'}}>
{MyData}
</span>
</h1>
</div>
// 渲染虚拟DOM
ReactDOM.render(VDOM,document.getElementById('test'))
</script>
</body>
</html>
7、 标签手写字母
1)、若小写字母开头,则将改为html中同名元素,若HTML中没有该标签的同名元素,则报错。
2)、若大写字母开头,react就去渲染对应的组件,若组件没有定义,则报错。
-
Js语句和Js表达式的区别:
1 表达式:一个表达式会产生一个值,可以放在任何一个需要值的地方
2语句:可以改变代码走向的都是语句
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello_React</title>
<style>
.title {
background-color: coral;
width: 200px;
}
</style>
</head>
<body>
<!-- 准备容器 -->
<div id="test"></div>
<!-- 引入React核心库 -->
<script type="text/javascript" src="../js/react.development.js"></script>
<!-- 引入react-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>
<script type="text/babel">
const data=['Antd','React','vue']
// 创建虚拟DOM
const VDOM=
<div>
<h1>react</h1>
<ul>
{data.map((item,index)=>{
return <li key={index}>{item}</li>
})}</ul>
</div>
// 渲染虚拟DOM
ReactDOM.render(VDOM,document.getElementById('test'))
</script>
</body>
</html>
重点:
1 模块化
1)、理解:向外提供特定功能的js程序,一般就是一个Js文件。
2)、为什么要拆成模块:随着业务漏极增加,代码越来越多且复杂。
3)、作用:复用Js,嘉华Js的编写,提高Js运行效率。
2 组件
1)、理解:用来实现局部功能效果的代码和资源的集合(HTML/CSS/image等等)
2)、为什么:一个界面的功能更复杂。
3)、作用:复用编码,简化项目编码,提高运行效率。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello_React</title>
</head>
<body>
<!-- 准备容器 -->
<div id="test"></div>
<!-- 引入React核心库 -->
<script type="text/javascript" src="../js/react.development.js"></script>
<!-- 引入react-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>
<script type="text/babel">
function Demo(){
return <h1>我的第一个函数式组件</h1>
}
ReactDOM.render(<Demo/>,document.getElementById('test'))
/*
执行了ReactDOM.render( <Demo />。。。。。之后,发生了什么?
1、React解析组件标签,找到Demo组件。
2、发现组件时使用函数定义的,随后调用该函数,将返回的虚拟DOM转为真实的DOM,随后渲染在页面上。
注意:
1、首字母必须大写
2、必须有返回值
3、必须写组件标签,不要写组件的名字
*/
</script>
</body>
</html>