React(用于构建用户界面的JavaScript库)
<code>React</code>是一个将数据渲染为HTML视图的开源JavaScript库。
采用组件化开发模式,使用声明式编程,而不是命令式编程,提高了开发效率以及组件的复用率。
在<code>React Native</code>中可以使用<code>React</code>进行移动端 <code>Android</code> 和 <code>ios</code> 应用的开发。
使用虚拟DOM+<code>diffing</code>算法,尽量减少与真实DOM的交互。
两者都是做组件化的,整体的功能都类似,但是它们的设计思路是有很多的不同的,使用React和Vue主要是理解它们设计思路的不同。
虚拟DOM的本质就是 <code>Object</code>类型的一般对象。
虚拟DOM比较<code>轻</code>,真实DOM比较<code>重</code>,虚拟DOM是React内部使用的DOM。
创建虚拟DOM用 <code>React.createElement( 标签名,标签属性,标签的内容 )</code> 方法
参数:
标签名。
标签属性。
标签内容。
渲染虚拟DOM用 <code>React.render( jsx模板,容器(挂载点),callback() )</code> 方法
jsx模板。
容器(挂载点)。
callback() 回调函数:当内容放到页面后触发的回调函数。
XML是早期时一种用于存储和传输数据的文件格式 如今被JSON代替
JSX
JavaScript
采用JavaScript方式创建虚拟DOM时不需要用到Babel转换,因为未使用到JSX语法。
定义虚拟DOM时不加双引号。
样式的类名指定不要用<code>class</code>,而是用<code>className</code>。
内联样式,需要用花括号键值表达的形式去写,在遇到双单词的属性需要使用驼峰命名法。
标签中混入<code>JS表达式</code>时,需要使用花括号。
只有一个根标签。
标签必须闭合
标签首字母
若是小写字母开头,则将标签转为HTML的同名元素,若HTML中无同名元素,则报错。
若是大写字母开头,则将标签转化为虚拟DOM组件,React就去渲染对应的组件,若组件未定义,则报错。
函数式组件
需要注意的地方是: 创建函数式组件时,render函数的第一个参数JSX模板 不再是变量名,而是加上函数式组件名,因为是react调用了该函数拿到返回的值,值得注意的是组件首字母需要大写。 函数式组件内部的this的指向不再是window,而是undefined,这是因为函数式组件的JSX模板经过Babel的转换,而Babel内部采用了严格模式进行编译,严格模式下不允许函数内部的this指向window。
类式组件
......后续待更新