引入react
学习基本使用方法时,以最方便的方式引入react
,就像引入原生jQuery
一样。需要引入相关的JavaScript
文件。
babel
可以将ES6
转ES5
,在react
中将jsx
转为js
。prop-types
这个我们目前还用不到,等后面再做详细了解react
为react
核心库。react-dom
为react
扩展库,用于操作DOM
react
基本结构
- 创建新目录
- 创建
html
文件 - 初始化项目环境
文件目录为:
+ code |-- js | |-- babel.min.js | |-- prop-types.js // 暂时用不上,可以不复制到文件结构中 | |-- react.development.js | |-- react-dom.development.js |-- test0.html
代码文件详情见code
目录
创建html
文件之后,按照规范编写好html
文件的相应的格式,如下
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Hello react</title> </head> <body> </body> </html>
react
项目在html
的<body>
中需要一个带有id
的<div>
容器来供react
来进行相应的注册。- 在
html
文件中引入我们所需要的JavaScript
文件 - 引入
JavaScript
文件时需要注意相应的顺序 - 其中必须先引入
react
库之后才可以紧接着引入react-dom
库,因为核心库必须先就位才可以准备扩展库 - 至于
babel
库则无需在意引入顺序
<!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> </body> </html>
到这一步,所有JavaScript
文件引入完毕,完成了项目环境的初始化,接下来边可以开始进行代码的编写了。
代码编写
注意要点
众所周知,而且前文也介绍过了react
是一个JavaScript
库,所以我们可以在html
通过<script>
标签来编写相应的JavaScript
代码。
但是有一点是要注意的。
因为我们已经介绍过了,react
使用的是jsx
,按照我们之前的习惯,<script>
标签中的type
属性可写可不写,通常来说我们都会完整的写上type
属性,如果我们用原生JavaScript
来写的话type
属性都是text/javascript
。
但是在react
中我们写的是jsx
,那么type
属性就不能省略了,因为一旦省略了,<script>
标签就会默认认为该标签中的代码是JavaScript
语法代码,但是实际上却是jsx
语法,会使得浏览器无法识别运行。
那么要想使得浏览器能够识别并运行jsx
语法的代码,那么就需要用到我们之前所说到的babel
库,这个库可以将ES6
转为ES5
,而且还可以将jsx
转为JavaScript
。所以这里我们用到的<script>
标签的type
属性就要写成text/babel
实现页面展示
上节课我们说过react
操作的是虚拟DOM
,然后再将虚拟DOM
映射成真实DOM
,但是虚拟DOM
又怎么来呢?前面也提到过,react
是将得到的处理好的数据渲染成HTML
,也就是说react
是将处理好的数据生成虚拟DOM
然后由虚拟DOM
来映射成真实DOM
。
但是我们目前一个简单地样例也可以有更简单的方法,就是直接写虚拟DOM
,至于数据呢,我们可以直接写死,把写死的数据来当成已经处理好的数据。
既然知道了这些,那就好办了,这个简单地样例大致就可以分为两步
-
创建虚拟
DOM
-
但是如何创建虚拟
DOM
?
我们假定虚拟
DOM
是个变量然后来jsx
语法定义一个变量。从而就算是完成了一个虚拟DOM
的创建至于说虚拟
DOM
的本质到底是什么,我们先留一个问题,后面课程里再慢慢探讨
-
渲染虚拟
DOM
到页面 -
有是一个相似的问题,怎么渲染?
之前使用
jQuery
的时候,只要我们引入了jQuery
,那么全局就会多出来两样东西就是jquery
关键字和$
,其实呢react
和jQuery
的使用方式也是比较相似的。只要引入了
react
核心库,那么全局就多了一个对象便是react
只要引入了
react
扩展库,那么全局也就多了相应的对象既然要渲染虚拟
DOM
,那么肯定就得用ReactDOM
对象的render
方法而
render
方法要接受两个参数,第一个参数就是待渲染的虚拟DOM
,另一个就是前文所说的容器,不然的话react
不知道该将虚拟DOM
渲染到哪里。那么问题又来了,我怎么把我的容器传进去?
react
也没有帮我们封装选择器,那么没有办法了,只能原生JavaScript
来选择到我们容器的节点了。
到当前状态,我们就算是把最简单的这个Hello react
的样例完成了,完整代码如下:
<!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">/* 此处必须写 babel */ // 创建虚拟DOM const VDOM = <h1>Hello react!</h1> /* jsx语法,一定不能用引号扩起来 */ // 渲染虚拟DOM到页面 ReactDOM.render( VDOM, document.getElementById("test") ) </script> </body> </html>
当我们用浏览器打开这个html
文件后看到的效果便是如下图所示:
总结
要点
react
库必须要在react-dom
之前引入- 引入
babel
库来支持jsx
语法 - 需要有容器来供
react
来渲染虚拟DOM
jsx
语法代码部分不能用引号把相关代码扩起来
易犯错误
- 没写容器
- 用引号把
jsx
语法扩起来了 <script>
的type
属性写错了
以上内容便是本节课程的内容。
Copyright statement:The articles of this site are all original if there is no special explanation, indicate the source please when you reprint.
Link of this article:https://work.lynchow.com/article/hello_react/