1.声明式设计 −React采用声明范式,可以轻松描述应用。
2.高效 −React通过对DOM的模拟,最大限度地减少与DOM的交互。
3.灵活 −React可以与已知的库或框架很好地配合。
4.JSX − JSX 是 JavaScript 语法的扩展。React 开发不一定使用 JSX ,但我们建议使用它。
5.组件 − 通过 React 构建组件,使得代码更加容易得到复用,能够很好的应用在大项目的开发中。
6.单向响应的数据流 − React 实现了单向响应的数据流,从而减少了重复代码,这也是它为什么比传统数据绑定更简单。
下面讲一下入门的demo实例(以下14个demo都在https://github.com/TimerYao/react_test)。
一:Hello World
head标签中先要引入三个js文件,react.js (是核心库),react-dom.js (是提供与dom相关的功能),最后是要把JSX语法转化为javascript语法的 browser.js。
<body>
<div id="example"></div>
<script type="text/babel">
ReactDOM.render(
<h1>Hello, world!</h1>,
document.getElementById('example')
);//把h1标签内容添加到id为example的div中。
</script>
</body>
ReactDOM.render是react的基本语法,可以将JAX语法转换为html语言,插入相应的DOM节点。
JSX与普通的js有一点不同在于<script>标签的type属性,js是text/javascript,这个是text/babel 。
相同的是可以把这段代码写入独立的一个js文件,然后在html引入即可(type值需要为text/babel )。
<div id="example"></div>
<script type="text/babel" src="helloworld_react.js"></script>
(demo1)运行效果:
我们也可以在浏览器调试页面可以看到。
此段代码就是h1标签的内容插入到了id为example的div中。
二:JSX语法介绍
JSX是javascript和XML结合的一种格式,它很灵活,可以将html与javascript混合写,遇到<,就当作HTML解析,遇到{,就当作javascript解析(demo2)。
<script type="text/babel">
var names = ['China', 'English', 'American'];//定义一个数组
ReactDOM.render(
<div>
{
names.map(function (name) {//map() 把每个元素通过函数传递到当前匹配集合中.
return <h1>Hello, {name}!</h1>
})
}
</div>,
document.getElementById('example')
);
</script>
首先我们定义了一个数组,map方法遍历该数组取值传给<h1>标签,然后插入到div中,效果如下:
JSX可以支持直接将javascript表达式,变量等插入模板,示例(demo3):