1. 声明式开发

react 是声明式的开发方式,与之对应的是命令式开发方式。之前用jquery写代码的时候,我们都是直接操作dom,这种我们称为命令式的编程。命令式编程需要我们一点点的告诉dom,它要怎么去做,怎样去挂载,即命令式编程则需要用算法来明确的指出每一步该怎么做。

react就是一个声明式的开发,声明式开发强调‘做什么’而不是‘怎么做’。react是面向数据编程的,只要把数据构建好就可以了。react会根据这个数据自动构建网站,也可以理解为,这个数据就是一张图纸,当图纸画好之后,react会自动根据图纸构建这座大厦。这种声明式开发介意节约大量的操作dom的代码。这是react的一个优势。

2. 可以与其他框架并存

使用react的时候,我们也可以使用jquery, vue 这样的框架。这是因为,在index.html文件中,react只管理id="root"里的代码的渲染,其他框架可以操作其他部分的代码。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>React App</title>
</head>
<body>
<div id="root"></div>
</body>
</html>

3. 组件化

4. 单向数据流

父组件可以给子组件传值,但是子组件只可以使用这个值,绝不能改变这个值。想要改变这个值的话,只能通过调用父组件的方法去改变父组件的值。之所以设计这个单向数据流,是为了我们开发,测试方便,不容易遇到坑。

5. 视图层框架

react 负责的是数据和页面渲染之间的问题,至于组件之间怎么传值,react并不擅长。在小型项目中,父子组件通信可以通过react来完成,但在大型项目中,使用react通信对多级组件传值要经过层层组件,这样很麻烦,因此需要flux,redux这样的数据层框架来辅助我们开发。这样我们就能理解为什么react定义为视图层框架,而不是大型的完整的框架。

6. 函数式编程

我们在使用react编程时,其实写的都是一个个的函数,如 constructor,render等,都是一个个的函数。函数式编程有以下几个好处:

  • 容易维护
  • 更容易实现前端自动化测试

react 的优点的更多相关文章

  1. react的优点:兼容了dsl语法与UI的组件化管理

    react的优点:兼容了dsl语法与UI的组件化管理. 组件化管理的dsl描述 UI: 虚拟dom:

  2. angular开发者吐槽react+redux的复杂:“一个demo证明你的开发效率低下”

    曾经看到一篇文章,写的是jquery开发者吐槽angular的复杂.作为一个angular开发者,我来吐槽一下react+redux的复杂. 例子 为了让大家看得舒服,我用最简单的一个demo来展示r ...

  3. 对react的几点质疑

    现在react.js如火如荼,非常火爆,昨天抽了一天来看了下这项技术.可能就看了一天,研究的不深入,但是我在看的过程中发现来了很多疑惑,这里拿出来和那家分享讨论以此共勉. 在我接触的前端以后,让我感觉 ...

  4. React + Reflux

    React + Reflux 渲染性能优化原理   作者:ManfredHu 链接:http://www.manfredhu.com/2016/11/08/23-reactRenderingPrinc ...

  5. React vs Angular 2: 冰与火之歌

    黄玄 · 3 个月前 本文译自 Angular 2 versus React: There Will Be Blood ,其实之前有人翻译过,但是翻得水平有一点不忍直视,我们不希望浪费这篇好文章. 本 ...

  6. React快速入门教程

    简介 Facebook官网介绍:React 是一个用来构建用户界面的 JavaScript 库.相当于 MVC 架构的 V 层. React 的核心思想是:封装组件,各个组件维护自己的状态和UI,当状 ...

  7. vue入门 vue与react和Angular的关系和区别

    一.为什么学习vue.js vue.js兼具angular.js和react的优点,并且剔除了他们的缺点 官网:http://cn.vuejs.org/ 手册:http://cn.vuejs.org/ ...

  8. 第一个react

    个人觉着react和vue是很相似的,之前还转载过一篇介绍两个异同点的文章,那个时候还完全不懂react,现在才慢慢开始接触,所以只能总结一些个人的心得,首先自然是react的优点了,个人觉着主要有以 ...

  9. vue、react、angular三大框架对比 && 与jQuery的对比

    前端当前最火的三大框架当属vue.react以及angular了. 但是在做项目的时候,我们怎么去选择呢?  这里做一个比较,希望大家可以有一个比较清晰的认识. vue与react vue和react ...

随机推荐

  1. import 更新变量

    其他的模块的变量一经引用,是定值,只能再次import才能更新他的值

  2. xxl-job的一些感悟与规范

    后台计划任务设计思路: 日志埋点处理,便于prd排查问题 2种主动job搭配规范(正向job.反查job) 1种消息接收的处理规范,重试机制,返回状态 job开关维度 数据流图 线上暗job-便捷性- ...

  3. linux-TCP多线程的并发服务器- 以言责人甚易,以义持己实难!!!

    1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <ti ...

  4. Java 关键字详解

    Java 关键字是 Java 语言中被赋予特殊意义的一些单词(每个关键字都代表着不同场景下的不同含义),不可以把它当作标识符来使用(不能用作变量名.方法名.类名.包名和参数名等).Java 中的关键字 ...

  5. C语言进阶日志二

    1.一个功能模块最好使用一个文件夹包含 2.基本就需要几个文件,比如定时器取反  LED: bsp_led.c 和 bsp_led.h : 包含你需要的led外设GPIO的初始化代码 led_it.c ...

  6. 8.12-14 df 、mkswap、swapon、swapoff、sync

    8.12 df:报告文件系统磁盘空间的使用情况   -a    显示所有文件系统 -h    以容易理解的格式显示磁盘的使用情况端 -i    显示文件系统的inode信息迷 -t    显示指定类型 ...

  7. FOC_矢量控制相关资料

    http://www.eepw.com.cn/news/listbylabel/label/FOC/ FOC(field-oriented control)为磁场导向控制,又称为矢量控制(vector ...

  8. .Net Core自实现CLR异步编程模式(Asynchronous programming patterns)

    最近在看一个线程框架,对.Net的异步编程模型很感兴趣,所以在这里实现CLR定义的异步编程模型,在CLR里有三种异步模式如下,如果不了解的可以详细看MSDN 文档Asynchronous progra ...

  9. MegEngine亚线性显存优化

    MegEngine亚线性显存优化 MegEngine经过工程扩展和优化,发展出一套行之有效的加强版亚线性显存优化技术,既可在计算存储资源受限的条件下,轻松训练更深的模型,又可使用更大batch siz ...

  10. 2、java数据结构和算法:单链表: 反转,逆序打印, 合并二个有序链表,获取倒数第n个节点, 链表的有序插入

    什么也不说, 直接上代码: 功能点有: 1, 获取尾结点 2, 添加(添加节点到链表的最后面) 3, 添加(根据节点的no(排名)的大小, 有序添加) 4, 单向链表的 遍历 5, 链表的长度 6, ...