最流行的JavaScript框架React快速概述
ccwgpt 2024-10-01 08:09 34 浏览 0 评论
React已经成为当前最流行的JavaScript框架。React的关键元素有哪些可以使它如此受欢迎?让我们潜入。
在现实世界中做出反应
由Facebook创建的React最初于2013年发布。React持续增长势头,直到它看起来像2017年将在许可方面遇到困难。Facebook坚持为开发者创造潜在的知识产权问题的BSD +专利许可证。幸运的是,在2017年9月,Facebook 根据更为可接受的MIT许可证对其进行了退款并重新授予了React 许可。目前的版本是16.2。
像其他流行的框架一样,React是一个免费的,未经许可的图书馆,因此没有完美的使用统计数据,但是我们可以通过几个地方了解整体采用情况。它在GitHub上拥有超过88万颗星,并且每月下载超过700万npm。当然,这些流量中的一部分可能来自开发机器或镜像,但这些数据很好地反映了图书馆的普及程度。
反应统计
GitHub上超过88K星
每月下载超过700万次下载
React于2016年1月每月下载量达到100万次下载,并且自那时以来一直稳步攀升,到2017年底达到700万。尽管2017年12月下降,2018年1月它的备份量超过750万次。
下载包裹“反应”2016-2017的数据 - npm-stat.com的数据
核心概念
React有一些独特的核心概念。它有一个虚拟DOM,JSX组件,输入属性和道具。另外,每个React组件都有一个状态和一个生命周期,我们将进入。
React核心概念
Virtual DOM
JSX
Components
Props
State
Lifecycle
虚拟DOM
虚拟DOM就像DOM一样是一个节点树。如果您熟悉DOM在网络浏览器中的工作方式,那么将很容易理解虚拟DOM。它非常相似,但都是虚拟的。有一组元素,属性和内容作为具有属性的JavaScript对象存在。当我们调用一个渲染函数 - 并且每个React组件都有一个渲染函数 - 它实际上是从该React组件创建一个节点树,无论它是否只是一个单独的组件,还是我们渲染子组件。它列出了整棵树。无论何时更新状态或更改组件内的任何内容,每当数据模型发生更改时,它都会更新相同的树。
React分三步更新真实的DOM。无论什么时候改变了,虚拟DOM都会重新渲染。然后计算旧虚拟DOM和新虚拟DOM之间的差异。然后从那里,真正的DOM将根据这些变化进行更新。不必一直使用真正的DOM,这非常昂贵,而是直到我们绝对需要更新DOM为止。那时候,我们会继续进行那么昂贵的通话。
JSX
JSX正式是一种类似XML的语法,与HTML很接近,但不完全是HTML。它实际上是带有HTML的JavaScript。它实际上就是这样的语法糖:
react.createElement(component, props, ...children)
而不是使用上面示例中的格式,我们将使用下面示例中使用标签MyButton显示的更简单的格式。
<MyButton color="blue" shadowSize={2}>
Click Me
</MyButton>
变
React.createElement(
MyButton,
{ color: 'blue', shadowSize: 2 },
'Click Me'
)
这一切都源自react.createElement。我们不需要手动创建元素,而是MyButton具有几个不同属性的组件 ,并将它们传递给它。我们不必处理创建元素,然后定义标记,然后传递所有属性和类似的东西。
组件
React让我们将用户界面分成独立的可重用片段。组件就像JavaScript函数一样。我们有一个任意数量的输入,设置道具,然后我们返回React元素。我们总是返回一个渲染函数,其中包含我们希望显示的元素。从一开始就非常简单,但我们可以通过它快速获得进步。渲染函数在这里非常重要,因为每个组件都有一个渲染函数。例如,我们将在这里看到我们有这个功能 Welcome(props)。
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
因为我们也可以把它写 @class Welcome延伸 React.Component,如果我们想工作多一点的带班的ES6方式。
class Welcome extends React.Component {
render() {
return <h1>Hello, {this.props.name}</h1>;
}
}
在第一个例子中,我们返回简单的HTML元素。在ES6的例子中,我们有同样的东西,但是渲染,这只是一个更多的语法抛出回传一个HTML元素。
Props
Props是什么给我们的组件和属性的整体属性。这就是我们传递数据的方式。这是我们如何处理各种不同的属性。正如我们在这里看到的,在这个例子中,我们有购物清单名称,我们在这里传入一个名称,并且this.props.name在渲染此特定组件时我们可以使用 。这是一种传入和传出数据的简单方法。
class ShoppingList extends React.Component {
render() {
return (
<div className="shopping-list">
<h1>Shopping List for {this.props.name}</h1>
<ul>
<li>Bananas</li>
<li>Cereal</li>
<li>Cabbage</li>
</ul>
</div>
);
}
}
每个组件都有一个状态,并且它实际上也管理着它自己的状态。这可以在我们的代码中提取和设置。作为开发人员,我们实际上负责更新和处理状态。在下面的例子中,我们在这里看到,在开始的时候,我们在构造函数中创建了这个时钟组件 this.state。我们传递一个新的日期,然后我们可以在渲染函数中实际输出。我们可以轻松地使用状态来执行常见的任务,如设置状态和轻松提取状态。
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: new Date()};
}
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
每个组件都有一个我们可以控制的特定生命周期。我们有安装,更新和卸载功能。我们有不同的生命周期挂钩的完整列表,我们也可以订阅。例如,构造函数可以帮助我们设置初始状态。然后,从那里,我们有其他事件,我们可以挂钩。
安装
constructor()
componentWillMount()
render()
更新
componentDidMount()
componentWillReceiveProps()
shouldComponentUpdate()
componentWillUpdate()
render()
卸载
componentDidUpdate()
componentWillUnmount()
入门
开始使用React的最简单方法是通过create-react-app CLI。这是官方的React CLI。然后我们可以创建一个新的应用程序,并引导整个应用程序。我们只是使用 create-react-app my-app。然后,我们继续前进,并解决问题 npm start。这个命令只是运行一个自定义的npm脚本来启动应用程序并为我们设置一个服务器,所以我们可以开始处理应用程序本身。
# Install create-react-app – React’s CLI
$ npm install –g create-react-app
# Create our app
$ create-react-app my-app
# Start our app
$ cd my-app
$ npm start
下一步是什么?
我们很快就涵盖了很多内容,以呈现React的“品味”,而且我们还没有做更多的事情。但是,这应该足以让每个人都高度关注我们在React中可用的内容。
现在我们已经快速浏览了React,React是您的正确选择吗?还有其他非常流行的框架 - 特别是Angular和Vue。虽然Vue和React有一些相似之处,但Angular却有很大不同。无论这是否是您的正确选择取决于许多因素。
相关推荐
- RACI矩阵:项目管理中的角色与责任分配利器
-
作者:赵小燕RACI矩阵RACI矩阵是项目管理中的一种重要工具,旨在明确团队在各个任务中的角色和职责。通过将每个角色划分为负责人、最终责任人、咨询人和知情人四种类型,RACI矩阵确保每个人都清楚自己...
- 在弱矩阵组织中,如何做好项目管理工作?「慕哲制图」
-
慕哲出品必属精品系列在弱矩阵组织中,如何做好项目管理工作?【慕哲制图】-------------------------------慕哲制图系列0:一图掌握项目、项目集、项目组合、P2、商业分析和NP...
- Scrum模式:每日站会(Daily Scrum)
-
定义每日站会(DailyScrum)是一个Scrum团队在进行Sprint期间的日常会议。这个会议的主要目的是为了应对Sprint计划中的不断变化,确保团队能够有效应对挑战并达成Sprint目标。为...
- 大家都在谈论的敏捷开发&Scrum,到底是什么?
-
敏捷开发作为一种开发模式,近年来深受研发团队欢迎,与瀑布式开发相比,敏捷开发更轻量,灵活性更高,在当下多变环境下,越来越多团队选择敏捷开发。什么是敏捷?敏捷是一种在不确定和变化的环境中,通过创造和响应...
- 敏捷与Scrum是什么?(scrum敏捷开发是什么)
-
敏捷是一种思维模式和哲学,它描述了敏捷宣言中的一系列原则。另一方面,Scrum是一个框架,规定了实现这种思维方式的角色,事件,工件和规则/指南。换句话说,敏捷是思维方式,Scrum是规定实施敏捷哲学的...
- 敏捷项目管理与敏捷:Scrum流程图一览
-
敏捷开发中的Scrum流程通常可以用一个简单的流程图来表示,以便更清晰地展示Scrum框架的各个阶段和活动。以下是一个常见的Scrum流程图示例:这个流程图涵盖了Scrum框架的主要阶段和活动,其中包...
- Mockito 的最佳实践(mock方法)
-
记得以前面试的时候,面试官问我,平常开发过程中自己会不会测试?我回答当然会呀,自己写的代码怎么不测呢。现在想想我好像误会他的意思了,他应该是想问我关于单元测试,集成测试以及背后相关的知识,然而当时说到...
- EffectiveJava-5-枚举和注解(java枚举的作用与好处)
-
用enum代替int常量1.int枚举:引入枚举前,一般是声明一组具名的int常量,每个常量代表一个类型成员,这种方法叫做int枚举模式。int枚举模式是类型不安全的,例如下面两组常量:性别和动物种...
- Maven 干货 全篇共:28232 字。预计阅读时间:110 分钟。建议收藏!
-
Maven简介Maven这个词可以翻译为“知识的积累”,也可以翻译为“专家”或“内行”。Maven是一个跨平台的项目管理工具。主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。仔...
- Java单元测试框架PowerMock学习(java单元测试是什么意思)
-
前言高德的技术大佬在谈论方法论时说到:“复杂的问题要简单化,简单的问题要深入化。”这句话让我感触颇深,这何尝不是一套编写代码的方法——把一个复杂逻辑拆分为许多简单逻辑,然后把每一个简单逻辑进行深入实现...
- Spring框架基础知识-第六节内容(Spring高级话题)
-
Spring高级话题SpringAware基本概念Spring的依赖注入的最大亮点是你所有的Bean对Spring容器的存在是没有意识的。但是在实际的项目中,你的Bean必须要意识到Spring容器...
- Java单元测试浅析(JUnit+Mockito)
-
作者:京东物流秦彪1.什么是单元测试(1)单元测试环节:测试过程按照阶段划分分为:单元测试、集成测试、系统测试、验收测试等。相关含义如下:1)单元测试:针对计算机程序模块进行输出正确性检验工作...
- 揭秘Java代码背后的质检双侠:JUnit与Mockito!
-
你有没有发现,现在我们用的手机App、逛的网站,甚至各种智能设备,功能越来越复杂,但用起来却越来越顺畅,很少遇到那种崩溃、卡顿的闹心事儿?这背后可不是程序员一拍脑袋写完代码就完事儿了!他们需要一套严谨...
- 单元测试框架哪家强?Junit来帮忙!
-
大家好,在前面的文章中,给大家介绍了以注解和XML的方式分别实现IOC和依赖注入。并且我们定义了一个测试类,通过测试类来获取到了容器中的Bean,具体的测试类定义如下:@Testpublicvoid...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- mfc框架 (52)
- abb框架断路器 (48)
- ui自动化框架 (47)
- beego框架 (52)
- java框架spring (58)
- grpc框架 (65)
- ppt框架 (48)
- 内联框架 (52)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)