最流行的JavaScript框架React快速概述
ccwgpt 2024-10-01 08:09 19 浏览 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却有很大不同。无论这是否是您的正确选择取决于许多因素。
相关推荐
- React 开发翻车现场!这 6 个救命技巧,90% 工程师居然现在才知道
-
前端圈最近都在卷React18新特性,可咱开发时踩的坑却一个比一个离谱!组件卡死、状态乱套、路由错乱...别担心!今天分享6个超实用的React实战技巧,让你轻松拿捏开发难题,代码直接...
- Web前端:React JS越来越受欢迎,它的主要优点为什么要使用它?
-
ReactJS是一个开源JavaScript库,用于为单页应用程序构建用户界面,它还为不同的移动应用程序提供视图层,并创建可重用的UI组件。 我们可以在Web应用程序的数据中创建特定的更改,而...
- 性能焦虑!前端人必看!5 个 React 组件优化神技! 颠覆你的认知!
-
在前端开发的赛道上,性能优化就像一场永不停歇的马拉松。作为前端工程师,你是否常常为React组件的性能问题头疼不已?页面加载缓慢、组件频繁重渲染,这些痛点分分钟让开发进度受阻。别担心!今天就来分享...
- React 实战必学!99% 工程师踩过的 5 大坑,3 招教你轻松破解
-
前端开发的小伙伴们,咱就是说,React现在可是前端界的“顶流明星”,热度一直居高不下!但用它开发项目的时候,是不是总有那么些瞬间,让你怀疑人生,对着屏幕疯狂抓头发?别慌!今天就给大家分享几个超实...
- 惬意!午间一道 React 题,轻松拿捏前端面试小技巧
-
忙碌了一上午,眼睛酸涩、脑子发懵?别急着刷短视频“放空”,不如花几分钟和我一起“品尝”一道React面试题小甜点!就像在阳光洒满窗台的午后,泡一杯热茶,惬意又能悄悄涨知识,何乐而不为?最近,...
- 一起深入盘点 2025 年 React 发展的 10个趋势?
-
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!1.React服务器组件React服务...
- 前端掉坑血泪史!4 个 React 性能优化绝招让页面秒开
-
在前端圈子里摸爬滚打这么多年,我发现React开发时踩坑的经历大家都大同小异。页面加载慢、组件频繁重渲染、状态管理混乱……这些痛点,相信不少前端工程师都感同身受。别愁!今天就给大家分享4个超...
- 前端人崩溃瞬间!5 招 React 实战技巧让项目起死回生
-
有没有在写React项目时,遇到页面卡顿到怀疑人生、数据更新不及时、代码逻辑混乱到无从下手的情况?别慌!作为摸爬滚打多年的前端老炮,今天就把5个救命级的React实战技巧倾囊相授,帮你轻松...
- 8.3K star!React Bits,让你拥有全网几乎所有动画效果
-
前端开源项目101专栏:一个能让你更快接触到高质量开源项目的地方。我会探索分享精选101个高质量的开源项目。这是系列的第7篇文章,分享一套拥有计划全网所有动画效果,且创意最丰富的动画React组...
- 开始学习React - 概览和演示教程
-
#头条创作挑战赛#本文同步本人掘金平台的原创翻译:https://juejin.cn/post/6844903823085944846当我刚开始学习JavaScript的时候,我就听说了React,但...
- 阿里AI工具Web Dev上线!一句话生成React网页
-
5月11日,阿里巴巴推出全新AI工具“WebDev”,支持用户通过一句话指令生成网页应用。该工具集成HTML、CSS、JavaScript三大前端核心技术,并统一采用React框架实现,可在数秒内创...
- JS流行框架/库排名Top100,看看你熟知的Js排第几
-
权威的JavaScript趋势榜stats.js.org每15分钟根据github上的stars和forks总数实时汇总出JavaScript开源项目的流行度排名,一起来看看你所熟知的项目排名第几...
- 新手如何搭建个人网站
-
ElementUl是饿了么前端团队推出的桌面端UI框架,具有是简洁、直观、强悍和低学习成本等优势,非常适合初学者使用。因此,本次项目使用ElementUI框架来完成个人博客的主体开发,欢迎大家讨论...
- 站在巨人肩膀上的 .NET 通用权限开发框架:Admin.NET
-
站在巨人肩膀上的.NET通用权限开发框架Admin.NET是一个面向.NET程序员的低代码平台,java平台类似的框架有ruoyi,芋道,JeelowCode等。这类框架普遍采用前后端分离的开发技...
- Python+selenium自动化之判定元素是否存在
-
在测试过程中,我碰到过这类的问题,使用find_element却找不到某个元素而产生异常,这就需要在操作某个元素之前判定该元素是否存在,而selenium中没有判定元素是否存在的方法,或者判定相同的元...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- React 开发翻车现场!这 6 个救命技巧,90% 工程师居然现在才知道
- Web前端:React JS越来越受欢迎,它的主要优点为什么要使用它?
- 性能焦虑!前端人必看!5 个 React 组件优化神技! 颠覆你的认知!
- React 实战必学!99% 工程师踩过的 5 大坑,3 招教你轻松破解
- 惬意!午间一道 React 题,轻松拿捏前端面试小技巧
- 一起深入盘点 2025 年 React 发展的 10个趋势?
- 前端掉坑血泪史!4 个 React 性能优化绝招让页面秒开
- 前端人崩溃瞬间!5 招 React 实战技巧让项目起死回生
- 8.3K star!React Bits,让你拥有全网几乎所有动画效果
- 开始学习React - 概览和演示教程
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- bootstrap框架 (43)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- express框架 (43)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)