![React.js 16从入门到实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/135/29977135/b_29977135.jpg)
1.6 JSX简单入门
在前文中介绍了如何通过React DOM的createElement()方法创建虚拟DOM,并将创建的虚拟DOM渲染到页面中的过程。但是,Facebook的React研发团队还是觉得不太满意,最终开发出来一种专属于React框架的JavaScript语法扩展—JSX。
所谓JSX其实就是JavaScript XML的缩写,直译过来就是基于JavaScript的XML。JSX看起来似乎是一种XML格式,其本质仍旧是一种JavaScript语言,只不过是将JavaScript脚本代码写成XML样式。其实,在【代码1-2】中的第02行代码就已经使用到了JSX语法,具体如下:
![](https://epubservercos.yuewen.com/27D3F5/16499866705998906/epubprivate/OEBPS/Images/Figure-P26_3718.jpg?sign=1739405290-u2gPnVVuputdkBaJjJTQRICj54S6fGur-0-ab90d0fa9d9b4bdf1fc7164709803388)
这里的<h1>标签元素就是通过JSX方式定义的,严格讲就是一个虚拟DOM。为了详细介绍React框架中JSX方式的使用方法,下面看一个具体的代码实例:
【代码1-5】(详见源代码目录ch01-react-jsx-intro.html文件)
![](https://epubservercos.yuewen.com/27D3F5/16499866705998906/epubprivate/OEBPS/Images/Figure-P26_3726.jpg?sign=1739405290-TPoYEWs4EHiGirkCcqRKT3Fu4VCpgLev-0-a6d83e34499c59c5ae6d03062054e610)
关于【代码1-5】的说明:
●首先,在第14行代码中,<script type="text/babel">标签内使用了JSX语法要求的"text/babel"属性,这一点会在后续章节中进行详细介绍。
●第18~23行定义了一段完整的JSX代码,实现了一个虚拟DOM对象,具体内容如下:
► 第18~23行代码通过const关键字定义了一个常量(reactSpan),该常量使用小括号包含了通过<span>、<h3>和<p>标签定义的元素组合。
► 第19~22行代码定义的HTML标签符合XML格式,而常量(reactSpan)的定义完完全全符合JavaScript语法,因此该语法被称为JSX。
●第24行代码调用React DOM对象的render()方法,将JSX代码渲染到页面中进行显示。
下面使用Firefox浏览器运行测试该HTML网页,具体效果如图1.10所示。
![](https://epubservercos.yuewen.com/27D3F5/16499866705998906/epubprivate/OEBPS/Images/Figure-P28_3922.jpg?sign=1739405290-3cxMNzJLQCwudndrMlXBNjsWYSNUuAtk-0-82bc1a3b4bcd3eccd2cf751fe5aacfc9)
图1.10 React JSX简单入门
图1.10中显示了通过React JSX方式渲染的效果。其实,通过React JSX方式定义的虚拟DOM,最终也会转换为通过createElement()方法实现虚拟DOM。