目录
一、什么是React
React是一个JavaScript库,是由FaceBook和Instagram开发的,主要用于用户创建图形化界面
angularJs | reactJs | vueJs | angularTs | |
---|---|---|---|---|
控制器 | √ | - | - | 弱化 |
过滤器 | √ | - | √ | √ |
指令 | √ | - | √ | √ |
模板语法 | √ | - | √ | √ |
服务 | √ | - | - | √ |
组件 | - | √ | √ | |
jsx | - | √ | 加入 | - |
二、开发环境的搭建
官方脚手架
yarn global add create-react-app | npm install create-react-app -g
创建 react项目
create-react-app 目录 | npx create-react-app 目录 | npm init react-app 目录
yarn eject 解构出所有的配置文件 可选
yarn start | npm start 开发
yarn build | npm run build 打包
//调试 需要安装给chrome浏览器一个插件 react-dev-tools
环境解析
- react: 核心包,解析组件 演示
- react-dom: 编译 -> 浏览器 演示
- react-scrpts: react的项目环境配置
- manifest.json 生成一个网页的桌面快捷方式时,会以这个文件中的内容作为图标和文字的显示内容
- registerServiceWorker.js支持离线访问,所以用起来和原生app的体验很接近,只有打包生成线上版本的react项目时,registerServiceWorker.js才会有效。服务器必须采用https协议
- 对Internet Explorer 9,10和11的支持需要polyfill。
环境配置
npm run eject | yarn eject
报git错误时:
git add . -> git commit -m 'init' -> yarn eject
报缺少babel 包: 安装一下
//修改端口
//修改script/start.js
const DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3001;
//去除eslint 警告
//config/webpack.config.js
//注释关于eslint的导入和rules规则
资源限制
-
本地资源导入(import) 不可以导入src之外的包
-
相对 指向src,绝对路径 指向了 public目录
-
前景图片, 相对 和 绝对路径 都指向了 public目录
第三方脚手架
yeomen/dva/umi
webpack手动搭建
JSX
jsx是一个 JavaScript 的语法扩展,可以理解为js的一个新的数据类型,类XML(JSON前身)语法,出现在js当中,文件为xx.js|xx.jsx
var b= <strong>强壮</strong>
语法要求
- 标签要闭合
- 元素必须要有一个顶层元素
- 变量首字母大写代表组件,小写对应是js数据类型
- 属性,小驼峰命名
<xx tabIndex="2">
三、最简单的React小程序
我学任何语言的时候第一个程序都是一个Hello,World!。现在就让我们来利用React来写一个最简单的Hello,World!
直接上代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello world!</title>
<script src = "../../build/react.js"></script>
<script src = "../../build/react-dom.js"></script>
<script src = "../../build/browser.min.js"></script>
</head>
<body>
<div id = "example"></div>
<script type="text/babel">
ReactDOM.render(
<h1>Hello,World!</h1>,
document.getElementById('example')
);
</script>
</body>
</html>
然后用浏览器打开就可以了(这里假设你已经会使用IntellJ IDEA,如果不会就先使用Sublime Text),然后在浏览器里面就可以看到你特别熟悉的Hello,World!了。
这里需要注意:首先,/h1>后面是此外,以前我们可能使用的是type是text/javascript,现在我们使用的text/babel。这是因为React独有的JSX语法,跟JavaScript不兼容,凡是使用JSX的地方,都要加上type = “text/babel”。
JSX的基本语法规则:遇到HTML标签(以<开头),就用HTML规则解析;遇到代码块(以{开头),就用JavaScript规则解析。
在ReactDOM.render里面写了两行,他们的作用就是将h1标题插入example节点。
你也可以直接新建一个js文件,然后将body里script里面的代码直接放到里面,我们可以命名为helloworld.js,然后在head里面导入即可。我比较倾向于这种做法,因为至少html文件不会看着太大,而且方便引入管理。如果其他html也需要改代码块,直接引入即可。
四、基础语法介绍
1、ReactDOM.render( )**
ReactDOM.render是React最基本的语法,用于将模板转换成HTML语言,并插入指定的DOM节点。
ReactDOM.render(
<h1>Hello,World!</h1>,
d