1、此处应用了三个库,必须首先加载,react.js是核心库,react-dom.js是提供与DOM相关的功能,babel.js的作用是将JSX语法转换为JavaScript语法,script标签加上type="text/babel"属性
2、ReactDOM.render是React的最基本的方法,用于将模板转换为HTML语言,并插入指定的DOM节点,两个参数,渲染内容和插入的节点
3、被称为 JSX,是一个 JavaScript 的语法扩展,JSX中使用插值表达式{ },并且JSX也是一个表达式;书写时会将 JSX 拆分为多行,同时,我们建议将内容包裹在括号中,这可以避免遇到自动插入分号陷阱
注意:
// JSX中的属性,你可以通过使用引号,来将属性值指定为字符串字面量:
// 在属性中嵌入 JavaScript 表达式时,不要在大括号外面加上引号。
// 你应该仅使用引号(对于字符串值)或大括号(对于表达式)中的一个,
// 对于同一属性不能同时使用这两种符号。
4、ReactDOM.render在所有内容渲染之前,都会将其转换为字符串,防止XSS攻击
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<!-- 此处应用了三个库,必须首先加载,react.js是核心库,react-dom.js是提供与DOM相关的功能,Browser.js的作用是将JSX语法转换为JavaScript语法 -->
<script src="lib/react.development.js"></script>
<script src="lib/react-dom.development.js"></script>
<script src="lib/babel.min.js"></script>
<title>JSX语法</title>
</head>
<body>
<div id="example"></div>
<!-- script标签的type属性为text/babel.这是因为React独有的JSX语法 -->
<!-- 它被称为 JSX,是一个 JavaScript 的语法扩展 -->
<script type="text/babel">
// ReactDOM.render是React的最基本的方法,用于将模板转换为HTML语言,并插入指定的DOM节点
const name = 'Josh Perez';
// JSX中使用插值表达式{},并且JSX也是一个表达式
const element = <h1>Hello, {name}!</h1>;
function formatName(user) {
return user.firstName + ' ' + user.lastName;
}
const user = {
firstName: 'Harper',
lastName: 'Perez'
};
// 我们会将 JSX 拆分为多行。同时,我们建议将内容包裹在括号中,这可以避免遇到自动插入分号陷阱
const element2 = (
<h1>
Hello, {formatName(user)}!
</h1>
);
// JSX中的属性,你可以通过使用引号,来将属性值指定为字符串字面量:
// 在属性中嵌入 JavaScript 表达式时,不要在大括号外面加上引号。
// 你应该仅使用引号(对于字符串值)或大括号(对于表达式)中的一个,
// 对于同一属性不能同时使用这两种符号。
// 使用小驼峰命名,并且class类使用className
const element3 = <img tabIndex="0" src={user.avatarUrl} />;
// 所有内容渲染之前都转换成了字符串,防止XSS攻击
ReactDOM.render(
element2,
document.getElementById('example')
);
// HTML 语言直接写在 JavaScript 语言之中,不加任何引号,这就是 JSX 的语法,
</script>
</body>
</html>