xml简单介绍
XML:xml早期用于存储和传输数据
eg:xml传输的数据格式:
<student>
<name>yang</name>
<age>20</age>
</student>
现在主要的数据传输格式是JSON(parse,stringfy)
jsx
jsx的全称是javaScript XML,是react定义的一种类似于XML的JS扩展语法
,本质是React.createElement
的语法糖,用来简化创建虚拟DOM。
jsx语法规则
- 定义虚拟DOM的时候不要写引号
eg:
const VDOM = <h1 id="title"><span>Hello,React</span></h1>
-
标签中混入
js表达式
时要用{}
注意是js表达式,不是js语句。- 表达式会返回一个值:a, a+b, arr.map(), function
- 所以
if语句,for语句,switch(){case:xxx}
的每一行都需要放在一个{}中 - {}中只能写js表达式,不能写if语句和for语句,如果需要判断可以使三元表达式
-
样式的类名不要用class,要用
className
,值仍然用""
包裹 -
内联样式要用
style={ {key:value,key:value}}
的形式,(第一个{}表示是js表达式,第二个{}表示是对象)。如果value值是一个字符串需要使用引号进行包裹 -
只有一个根标签
-
标签必须闭合
-
标签的首字母
若小写字母开头,则解析jsx的时候直接将标签转换成html中同名元素,若html中无对应的标签则报错
若大写字母开头,则解析jsx的时候会去渲染对应的组件,若没有定义,则报错
使用样例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.header{
background-color: orange;
}
</style>
</head>
<body>
<!-- 容器 -->
<div id="test"></div>
<!-- REACT ,react核心库-->
<script type="text/javascript" src="../js/react.development.js"></script>
<!-- REACTDOM ,支持react操作dom-->
<script type="text/javascript" src="../js/react-dom.development.js"></script>
<!-- 将jsx转换成js文件 -->
<script type="text/javascript" src="../js/babel.min.js"></script>
<!--text/babel表明是jsx -->
<script type="text/babel">
const myId="title"
const myData ="Hello,React"
// 1.创建虚拟DOM
const VDOM = (
<div>
<h1 className="header" id={
myId.toLowerCase()}>
<span style={
{
color:'white',fontSize:'30px'}}>{
myData}</span>
</h1>
<h1 className="header" id={
myId.toUpperCase()}>
<span style={
{
color:'white',fontSize:'30px'}}>{
myData}</span>
</h1>
<input type="text"/>
</div>
)
// 2.渲染虚拟DOM到页面
ReactDOM.render(VDOM,document.getElementById("test"))
</script>
</body>
</html>
jsx语法小练习
实现如下效果:
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.header{
background-color: orange;
}
</style>
</head>
<body>
<!-- 容器 -->
<div id="test"></div>
<!-- REACT ,react核心库-->
<script type="text/javascript" src="../js/react.development.js"></script>
<!-- REACTDOM ,支持react操作dom-->
<script type="text/javascript" src="../js/react-dom.development.js"></script>
<!-- 将jsx转换成js文件 -->
<script type="text/javascript" src="../js/babel.min.js"></script>
<!--text/babel表明是jsx -->
<script type="text/babel">
// 1.创建虚拟DOM
const data =['Angular','React','Vue']
const VDOM = (
<div>
<h1>前端js框架</h1>
{
data}
<ul>
{
data.map((item,index)=>{
return <li key={
index}>{
item}</li>
})
}
</ul>
</div>
)
// 2.渲染虚拟DOM到页面
ReactDOM.render(VDOM,document.getElementById("test"))
</script>
</body>
</html>
- React会自动遍历数组,但是不会遍历对象
{}
中放的是js表达式- jsx中的变量需要使用{}括起来(变量属于js表达式)