一、什么是React
用于构建用户界面javascript UI库,很多人认为它是MVC中的V(视图),起源于Facebook的内部项目
二、React的特点
1、声明式设计 ?React采用声明范式,可以轻松描述应用(自动dom操作)。 2、高效 ?React通过对DOM的模拟(虚拟dom),最大限度地减少与DOM的交互。 3、灵活 ?React可以与已知的库或框架很好地配合。 4、JSX ? JSX 是 JavaScript 语法的扩展。 5、组件 ? 通过 React 构建组件,使得代码更加容易得到复用,能够很好的应用在大项目的开发中。 6、单向响应的数据流 ? React 实现了单向响应的数据流,从而减少了重复代码,这也是它为什么比传统数据绑定更简单。
三、React高效的原因
React高效的原因:虚拟的dom,不总是直接操作DOM;高效的DOM Diff算法,最小化的页面绘。 什么是Diff算法?答:比较变换前的dom和变换后的dom差别,只渲染局部的,肯定比渲染整个页面来得性能高
四、React的核心是组件,精髓是函数式编程
它遵循组件设计模式、声明式编程范式和函数式编程 1、组件设计模式: React一切都是组件。 我们通常将应用程序的整个逻辑分解为小的单个部分。 我们将每个单独的部分称为组件。 通常,组件是一个javascript函数,它接受输入,处理它并返回在UI中呈现的React元素。 2、声明式编程范式: 一种编程范式,它关注的是你要做什么,而不是如何做。它表达逻辑而不显式地定义步骤。这意味着我们需要根据逻辑的计算来声明要显示的组件。它没有描述控制流步骤。声明式编程的例子有HTML、SQL等 3、函数式编程: 函数式编程是声明式编程的一部分。javascript中的函数是第一类公民,这意味着函数是数据,你可以像保存变量一样在应用程序中保存、检索和传递这些函数。 函数式编程有些核心的概念,如下: 不可变性(Immutability)、纯函数(Pure Functions)、数据转换(Data Transformations)、高阶函数 (Higher-Order Functions)、递归、组合 4、模块与组件的区别: 从设计上来看,组件强调复用,模块强调职责(内聚、分离),或者说组件是达到可复用要求的模块 模块: 向外提供特定功能的js程序,一般就是一个js文件(为什么?js代码更多更复杂),简化js的编码,阅读,提高运行效率 组件: 用来实现特定功能效果的代码集合(html/css/js)(为什么?一个界面的功能更加复杂),复用,简化项目编码,提高运行效率 模块化: 当应用的js都以模块来编写的,这个应用就是模块化应用 组件化 : 当应用是以多组件的方式实现功能,这上应用就是一个组件化的应用
五、JSX语法的由来
1、什么是JSX: JSX 将 HTML 语法直接加入到 JavaScript 代码中,再通过翻译器转换到纯 JavaScript 后由浏览器执行。在实际开发中,JSX 在产品打包阶段都已经编译成纯 JavaScript,不会带来任何副作用,反而会让代码更加直观并易于维护。 官方定义是类 XML 语法的 ECMAScript 扩展。它完美地利用了 JavaScript 自带的语法和特性,并使用大家熟悉的 HTML 语法来创建虚拟元素。
六、单向响应的数据流
父组件可以向子组件传值,但是子组件不能直接改变这个值。 在子组件去调用父组件传递的方法。是子组件调用父组件的方法,最终是父组件的方法来对自己的内容进行改变的,这样维护起来就容易了,所有相关list的操作都在父组件这一个组件。
七、扩展
相关的js库 react-js:Reack的核心库 react-dom.js:提供操作DOM(虚拟的)的扩展库 babel.min.js:解析jsx语法代码转为纯js语法代码的库 什么是babel 一个工具库:可以将ES6转化为ES5等功能
|