![React.js 16从入门到实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/135/29977135/b_29977135.jpg)
1.3 第一个React应用
本节开始介绍第一个使用React框架开发Web前端应用,让读者一识React应用的庐山真面目。React应用开发涉及的内容比较广泛,我们还是从最简单、最基本的“Hello World”开始介绍。简单来讲,就是如何将传统意义的HTML网页内容,以React框架渲染的方式来实现。
首先,就是如何安装和使用React框架。React框架的安装和使用很简单,可以直接通过CDN方式获取React和ReactDOM的UMD版本引用,具体如下:
![](https://epubservercos.yuewen.com/27D3F5/16499866705998906/epubprivate/OEBPS/Images/Figure-P14_2877.jpg?sign=1739211456-kEb3Z37NO53v5yqBIYZJoGAvLCJeyM6y-0-f74c9c6523de3ae092cb34baf20be04f)
不过,上述版本仅用于开发环境,不适合生产环境。React压缩和优化之后的生产环境版本链接如下:
![](https://epubservercos.yuewen.com/27D3F5/16499866705998906/epubprivate/OEBPS/Images/Figure-P14_2902.jpg?sign=1739211456-QaiXH0rhNUpfalRDcdS9LFPJAxxuV9yN-0-9f9c8c9463737d1df25da458c04e49c4)
此外,还要引入Babel编译器所需的库文件,具体如下:
![](https://epubservercos.yuewen.com/27D3F5/16499866705998906/epubprivate/OEBPS/Images/Figure-P15_53437.jpg?sign=1739211456-hrcQRUgsc03lIWEWg6rRyZa3IdXXlnyt-0-97bc02c732f2ba00dda184f172a14b21)
注意
Babel库文件在生产环境下也是不建议使用的。
关于上面以CDN方式引入的一组库文件(react.js、react-dom.js和babel.js这3个脚本文件,文件名为泛指),具体描述如下:
●react.js是React框架的核心库。
●react-dom.min.js提供与DOM相关的功能。
●babel.min.js由Babel编译器提供,可以将ES6代码转为ES5代码,这样就能在不支持ES6的浏览器上执行React代码(请注意在生产环境中不建议使用)。
下面,开始第一个使用React框架实现“Hello World”应用的代码实例,具体如下:
【代码1-1】(详见源代码目录ch01-react-helloworld.html文件)
![](https://epubservercos.yuewen.com/27D3F5/16499866705998906/epubprivate/OEBPS/Images/Figure-P15_2984.jpg?sign=1739211456-B3QVWPmu8B4927AvJUQfKt2pv5CH2HBz-0-fe99093d5cb932979c7850ddb191b1cf)
关于【代码1-1】的说明:
●第06行、07行和第09行代码,以CDN方式分别引用了React框架所需的三个库文件(react.development.js、react-dom.development.js和babel.min.js)。
●第12行代码通过<div id="root">标签元素定义了一个层,用于显示通过React框架渲染的文本内容。
●第14~17行代码通过调用React DOM对象的render()方法来渲染元素。
●第14行代码定义了要引入的元素节点<h1>。
●第15行代码获取了页面中要渲染的元素节点<div id="root">。
●然后,第14~17行代码通过ReactDOM.render()方法将<h1>元素节点渲染到页面的层<div id="root">元素节点中。
关于ReactDOM.render()方法的语法格式如下:
![](https://epubservercos.yuewen.com/27D3F5/16499866705998906/epubprivate/OEBPS/Images/Figure-P16_3132.jpg?sign=1739211456-u2fBFmAlufDg3zzUimNdvvz22Yvf7JvB-0-b024b7c62bba4e0f044f417edb513095)
语法说明:
●element参数:必需,表示渲染的源对象(元素或组件)。
●container参数:必需,表示渲染的目标对象(元素或组件)。
●callback参数:可选,用于定义回调方法。
对于【代码1-1】中所使用渲染方法的方式(见第14~17行代码),看上去很直观,不过感觉逻辑性不太强。
下面,我们尝试将上述代码以如下的方式进行改写,或许会比较容易理解了,具体如下:
【代码1-2】(详见源代码目录ch01-react-ele-helloworld.html文件)
![](https://epubservercos.yuewen.com/27D3F5/16499866705998906/epubprivate/OEBPS/Images/Figure-P16_3141.jpg?sign=1739211456-TU39hgtSHFeTaWTrCurUnA2ok9zxzffh-0-7d7867d8474158ee9bb2fe19b3803755)
关于【代码1-2】的说明:
●第02行代码通过const关键字定义了一个常量(h1),描述了要引入的元素节点<h1>。由此可见,在React框架中变量的使用非常灵活,可以将元素节点直接定义为变量形式来使用。
●第03行代码获取了页面中要渲染的元素节点<div id="root">,保存在变量(root)中。
●第04行代码调用React DOM对象的render()方法,将h1元素节点渲染到root元素节点中。
可以看到,改写后的【代码1-2】逻辑性比较好,读者应该能够很容易分清渲染的源对象和目标对象,以及渲染方式。
下面分别使用Firefox浏览器运行测试【代码1-1】和【代码1-2】定义的HTML网页,二者的具体效果(相同的)如图1.1所示。页面中成功显示了通过React框架渲染出的文本内容(Hello, world!)。
![](https://epubservercos.yuewen.com/27D3F5/16499866705998906/epubprivate/OEBPS/Images/Figure-P17_3179.jpg?sign=1739211456-KEzfZ576omrtXduYygjWbJn2aJjpPIB9-0-218c94c886c89e01b4f19029651db8be)
图1.1 React实现“Hello world”