这是《玩转 React》系列的第二篇。在该篇中,我们来了解下,React 的出现到底给我们的开发方式带来了什么样的变化。

我的感触可以用一个字来形容,爽!主要爽在以下两个方面。

视图是数据的映射(单向数据流)

React 是一个视图层的框架,所谓视图层就是我们在网页上能看到的部分。在传统的方式中,我们通过编写HTML代码来设计网页的结构,通过 JavaScript 以及 getElementById 等 api 来获取某个节点,通过节点的 innerHTML,innerText,appendChild 等属性或者方法(或者你也可能用JQuery)来更新视图。

在 React 时代,你除了需要自己考虑网页的结构和CSS样式外,视图的更新 React 统统帮你搞定。

那么,用了 React 我们如何来更新视图呢,先看下面这个张图:

在 React 中视图是数据的映射,你想要视图发生变化,那你只要改变数据就好了,就是这么简单。

举个简单的例子,你打算在你的页面上展示用户的名片,名片上有照片、姓名、年龄、地址等基本信息,如下图所示:

这个名片,作为视图的一部分,在 React 中是由某个用户的数据映射而来的,可能长得像这样:

{photo: "my-photo.jpeg",name: "sarike",age: 18,address: "北京"
}

如果你希望网页的浏览者,可以切换查看不同用户的名片,你要做的只是用下一个用户的数据替换一下当前的数据就可以了。至于新的数据是如何替换掉页面上的旧数据的,就无需关心了,React 会以最高效的方式帮你完成。

这也就是所谓的单向数据流,在这种开发方式下,会让你更新视图的逻辑非常清晰、简单,哪怕你的前端交互很复杂,也不至于让你的代码那么容易变成一坨。

是不是很爽?

面向组件编程

上一部分说的 React 中更新视图只需要更新数据就可以了,如果你觉得也就一般般吧,那下面要说的一定爽到爆。

先说一下什么是组件,顾名思义,组件就是用来组合成更高级东西的物件。打个比方,比如一辆汽车,汽车中的各种螺丝、铁块等零件就可以看作是一个个组件,这些小的组件我们还可以继续组合,比如组合成发动机、轮胎、车架等有特定功能的组件,然后这些组件又可以继续组合成一辆完整的汽车。

对应到我们的前端开发中,HTML中的各种元素(如:div,table,input,select等)就是一个个最基本的组件,你可以把他们继续组合,组合成第一部分说的名片,或者一个填写用户信息的表单,展示所用用户的一个列表等有特定业务功能的组件,各种各样的业务组件最终组合成一个完整的前端页面。

组件最大的特点就是可以重复利用,比如说用户名片这个组件,你可以放到个人信息页面,也可以放到文章详情页面来展示作者信息,制作完成,到处利用。

言归正传,那在使用 React 是,是如何面向组件编程的呢,现在你可以这样来理解,React 提供了一种可以创造新的 HTML 标签的能力

例如第一部分讲的用户名片的例子,通过 React 你可以制作这样一个组件:

<Card name="sarike" age="18" address="北京" />

而且更重要的是,你可以以如此简单的方式在你应用的任何位置重复利用。

你说,酷不酷,爽不爽?!!

至此以后,你在开发一个前端页面时,你需要做的就是将页面拆分成各种组件,然后把它们组合起来就好了。

在此想跟大家分享一点小经验,这也关系到你最终能不能将 React 用得很溜。就是:在前端开发过程中,要善于观察和抽象。尤其是在项目前期,不要着急写代码,一定观察项目的原型图或者设计稿,想想哪些部分是可以拆分成可以复用的公共组件的。这样做能让你后面的工作,事半功倍。

在后面的文章中你将更深入地体会到这一点,同时你也会体会到 React 的组件化开发,到底是多么多么的爽!!

写在最后

在阅读上面内容的时候,你可能会有一些疑惑,比如说你可能会质疑“创建一个新的 HTML 标签这种说法”,这怎么可能呢?是的,深究原理的话,确实不是这样,但是从开发者使用框架的角度,React 确实给了我们这样的体验。所以,希望大家在阅读的时候跟着我的节奏来就好,所有的疑惑会随着文章的推进,渐渐消退。

谢谢大家。

玩转 React(二)- 新型前端开发方式相关推荐

  1. 玩转 React(四)- 创造一个新的 HTML 标签

    在第二篇文章 <新型前端开发方式> 中有说到 React 有很爽的一点就是给我们一种创造 HTML 标签的能力,那么今天这篇文章就详细讲解下 React 是如何提供这种能力的,作为前端开发 ...

  2. b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释

    b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释 继续上篇,上篇里忘记了也很重要的前端部分,今天的网站基本上是以一个启示页,然后少量的整页切换,大量的浏览器后台调用web服务局部.动态更 ...

  3. 如何使用React和Redux前端创建Rails项目

    by Mark Hopson 马克·霍普森(Mark Hopson) 如何使用React和Redux前端(加上Typescript!)创建Rails项目 (How to create a Rails ...

  4. 【Microsoft Azure 的1024种玩法】二十四.通过Azure Front Door 的 Web 应用程序防火墙来对 OWASP TOP 10 威胁进行防御

    [简介] 我们都知道像 SQL 注入.跨站点脚本攻击(XSS)之类的恶意攻击以及 OWASP 发现的十大威胁都可能会导致服务中断或数据丢失,让 Web 应用程序所有者受到巨大威胁.那么如何有效的解决O ...

  5. Vue的新型前端构建工具Vite怎么用

    本文小编为大家详细介绍"Vue的新型前端构建工具Vite怎么用",内容详细,步骤清晰,细节处理妥当,希望这篇"Vue的新型前端构建工具Vite怎么用"文章能帮助 ...

  6. react前端开发_是的,React正在接管前端开发。 问题是为什么。

    react前端开发 by Samer Buna 通过Samer Buna 是的,React正在接管前端开发. 问题是为什么. (Yes, React is taking over front-end ...

  7. 二、前端开发-HTML

    二.前端开发语言体系-HTML 文章目录 二.前端开发语言体系-HTML HTML5 表单 绘图 多媒体 HTML5常用API 参考文章 HTML5 表单 HTML 表单用于搜集不同类型的用户输入. ...

  8. 初识react(二) 实现一个简版的html+redux.js的demo

    回顾 初识react(一) 揭开jsx语法和虚拟DOM面纱 初识react(二) 实现一个简版的html+redux.js的demo 初识react(三)在 react中使用redux来实现简版计数器 ...

  9. 重新学习 React (二) Diffing 算法

    前几天面试问道 react 的相关知识,对我打击比较大,感觉对 react 认识非常肤浅,所以在这里重新梳理一下,想想之前没有仔细思考过的东西. 另外有说的不对的地方还请帮我指正一下,先谢谢各位啦. ...

最新文章

  1. pandas使用groupby函数按照多个分组变量进行分组聚合统计、使用agg函数计算分组的多个统计指标(grouping by multiple columns in dataframe)
  2. windows和Linux内存的对齐方式
  3. 云服务器 VNC 远程连接
  4. uva 437——The Tower of Babylon
  5. 【Docker】elasticsearch 监控工具 elasticsearch-HQ
  6. 从 4 个月到 7 天:Netflix 开源自家框架 Metaflow,性能像坐上了火箭
  7. jquery网页日历显示控件calendar3.1使用详解
  8. 转:Java NIO系列教程(一)Java NIO 概述
  9. 深度原理与框架-图像超分辨重构-tensorlayer
  10. python 抢红包 不越狱_这个Python脚本牛逼了,秒抢红包and无视撤回消息
  11. 用SyncToy进行两台服务器之间文件同步
  12. 测试高中低音的软件6,分别用什么音乐来测试设备的高中低音。
  13. 最新免费纯净版PE制作工具V2.1【更新说明】
  14. JVM致命错误日志详解
  15. AI得贤招聘官|帮助HR解决实际问题
  16. 0.96OLED图标取模,包括信号图标,蓝牙图标,闹钟,电池
  17. 想从事人工智能方面,需要自学什么?
  18. 钉钉机器人推送和抓取钉钉群消息
  19. W10 无法启动你的相机
  20. Redis说无法分配内存该怎么办?

热门文章

  1. Ubuntu20.04 编译运行apue.3e 避坑指南
  2. 语言代码编程大赛简讯_精品干货:C语言的高效编程与代码优化
  3. k8s包管理器helm_kubernetes包管理神器-Helm
  4. 使用 graphviz 形象化有向图
  5. JavaEE5 Jax-ws 学习(Soap webservice)
  6. JavaScript基础学习第四天
  7. extern 用法,全局变量与头文件(重复定义)
  8. 迅为I.MX6Q开发板配不同分辨率不同尺寸液晶屏幕
  9. android AsyncTask介绍(转)
  10. Metasploit Framework(1)基本命令、简单使用