level 8
现在最热门的前端框架,毫无疑问React 是其中之一。
2017年06月06日 07点06分
2
level 8
React
React是由faceBook发布的一个开源框架,已经应用在instagram应用中
React是一个架构新颖的框架,可以提高项目性能
我们以前学的angular,他的特点就是指令与数据绑定,相当于为dom元素添加了一些新的功能,让dom元素功能更强大,例如dom自动显隐,我们可以让dom循环创建等等。
如果将dom比作汽车,angular相当于给这个汽车添加一些装饰,让他看上去更高端,提高一些马力等等
React相当于另起炉灶,自创了一辆汽车,只有四个轱辘就可以了,很轻量级,只需要一点点马力就可以开动的
React特点有三个
第一个虚拟dom
第二个是组件化开发
第三个是多端适配
2017年06月06日 07点06分
3
level 8
适配多端是react最具革命性的一个创新
大致内容:我们在一处开发,可以应用在各个地方
在react的0.13版本之后拆分出一个核心模块和一个渲染模块
核心模块就是react.js
专门用来创建虚拟dom
渲染模块:例如浏览器端 react-dom.js
2017年06月06日 07点06分
5
level 8
创建虚拟DOM
React.createElement 创建虚拟DOM方法
第一个参数表示虚拟dom的名称(也可以是组件名称)
第二个参数表示虚拟dom属性(是一个对象,如果没有,传入null)
从第三个参数开始表示虚拟dom子虚拟dom元素
注意子虚拟dom元素也是需要用React.createElement方法创建的
但是如果是文本节点可以直接写入
2017年06月06日 07点06分
6
level 8
虚拟dom中的数据远比真实dom元素属性少
Props表示虚拟dom的一些属性
Children表示该元素的所有子虚拟dom元素
虚拟dom与真实的dom行为是一致的
2017年06月06日 07点06分
7
level 8
Jsx语法
React开发的一个问题就是,书写虚拟dom成本很高
我们可以像书写xml标签一样书写虚拟DOM
在html中定义div,<div></div>
jsx语法中定义div虚拟dom: <div></div>
在html中定义input元素: <input type=”text” />
Jsx语法中定义input虚拟DOM: <input type=”text” />
Jsx语法定义的文件的拓展名通常是jsx
遗憾的是浏览器不支持这种语法
所以我们就要编译
可以在浏览器端编译
需要browser库
并且将书写jsx语法的标签type类型改成text/babel
在工程化中使用
以fis3为例,直接通过babel2插件编译
第一步 获取所有jsx文件
第二步 引入插件
第三步 更改后缀名称
var h1 = (<h1>爱创课堂</h1>);
2017年06月06日 07点06分
10