1、ReactJs 是为了解决构建随着时间数据不断变化的大规模应用程序。用于构建用户界面的JavaScipt库,对应mvc设计模式中的V(视图)。由FaceBook开源。
MAC:Model模型 view Controller
MVVM:Model模型 view ViewModel
2、优点:
2-1、JSX(Javascript XML) 是js内定义的一套xml语法,最终被解析成js,在JSM中可以将HTM或自定义标签混写。并且也可以检查语法
js(ECMAScript,DOM,BOM), JSX 不属于ECMAScript的语法,只是ECMAScript语法的扩展
(TypeScript ts)
2-2、虚拟DOM (优秀的Diffing算法),高效速度快(尽可能减少回流和重绘),并且跨浏览器兼容
2-3、组件reaact核心,一个完整的react应用是由若干干个组件搭建起来,每个组件自己的数据和方法,保证代码高内聚低耦合
2-4、resct 只是MVC中的View层,自己是办法构建大型应用,需要与已有的框架和库配合,如:flux(前端框架)、Redux(状态管理)、Axios/Fetch(异步请求)等。
缺点:开发周期相对比较长,前期开发成本比较高
3、React 适用场景
React 适用于周期相对比较长,开发灵活的度比较高,后期组件定制性比较大型应用,比如:控制系统的类型,阿里云的可视化联控系统等
4、最新的版本可以分三个:
Raect.v16.** 用的最大的,老的项目用的比较多
Raect.v17.** 过渡版
Raect.v18.** 下载量和使用率占v16有一半左右,是未来的趋势
5、React应用构建
使用库:
react.js 核心库
react-dom.js 提供了DOM的react扩展
babel.min.js 解析JSX语法 转化为js代码
6.虚拟DOM 和 真实DOM
6-1、VDOM 就是一个简单的虚拟DOM对象。
const VDOM = React.createElement('标签明',标签上的属性,标签中的子内容)
6-2、虚拟DOM对象最终都会被react转化为真实的DOM
6-3、我们写代码时基本只需要react的虚拟DOM及相关数据
7.JSX:Javascript XML, 是js的一种扩展语法
写法:var elm = <h1>hell0</h1>
作用:用来简化创建虚拟DOM
注意:
1、它不是一串字符串,也不是html/xml标签
2、它最终产生的就是一个js对象
3.React注意点
3-1.React元素的属性名使用驼峰命名法
3-2.特殊的属性名:class -> className、for -> htmlFor、tabindex -> tebIndex
3-3.没有子节点的react元素可以直接用 /> 结束 <span/>
3-4.使用小括号包着JSX元素,从而避免JS自动插入的分号陷阱
8.babel.min.js
1.浏览器不能解析JSX代码,需要Babel转译为纯js代码就能运行
2.在使用<script>标签的地方 添加属性 type="text/babel"
9.react.createElement()方法的弊端以及和JSX的关系
1.react.createElement('div',null,react.createElement('span',null,'这是个span'))
2.jsx:<div><span>这是个span</span></div>