什么是React,它的用途是什么?
React通常被称为前端框架,但我个人认为它更像是一个UI库。
典型的React用例是建立可交互的网站。当人们说React是一个前端框架时,他们真正谈论的是将其用于前端Web开发,即所有的功能和流程都必须用于构建你所交互的元素。
React由Meta(以前称为Facebook)建立,可能是最受欢迎的前端框架之一,特别是如果你是一个工程师,因为React是最容易学习和使用的框架之一。
它之所以如此受欢迎,也是因为你可以很快学会它,然后尽快在这个行业找到一份高薪工作。
React的建立是为了让Meta能够更容易地获得应用程序的构建,这是真的吗?
算是吧。实际上,React实际上是作为对Angular的一种回应而建立的。
如果你看一下市场,有三个主要参与者。
- 谷歌的Angular
- Facebook的React,以及
- 以及拥有Vue.js的Evan You
早在2009年,谷歌就开始研究拥有一个以单页应用为重点的("SPA")框架的想法。
SPA是指看起来是一个单一页面的网站,但实际上是动态地渲染和重新渲染新的内容,只依赖网络浏览器的资源。
这方面的目标是通过绕过缓慢的服务器延迟来获得快速加载的网站,他们通过创建Angular框架来实现这一目标。
当这种情况发生时,整个网络的架构完全改变了,但Angular的第一个版本有一些问题。
作为回应,Facebook随后用React解决了这些问题,使其成为工程师中最受欢迎的框架,并帮助在人们用来建立网站的东西之间创造了一个标准化的水平。
事实上,React可以被看作是Web 2.0和关注前端用户体验的推动力。由于这些框架的改进,我们已经习惯了快速加载的网络体验。
React是一个框架还是一种编程语言,有什么区别?
React是一个框架,下面是语言和框架的区别。
编程语言是一套规则和语法,规定了你如何建立一个程序。你可以把它看成是最底层的工具,你可以用它来构建程序,即计算机可以运行的可执行的东西。
框架更像是一种在特定编程语言中构建的工具。它帮助你绕过很多问题或任务,包括在框架内预先设置的 "小程序",使你更容易用该特定的语言构建程序。
为了帮助你想象这一点,想象一下烹饪食物。
在烹饪中,有不同的烹饪风格,但在每个风格中,也有不同的工具,你用来烹饪这些食物。
所以在这个例子中,中国菜是一种语言,但炒锅是帮助你烹饪中国菜的工具或框架。
React和React Native之间的区别是什么?
React有两个包。
- 基本React库或 "React DOM "是React的网络浏览器版本。你可以把它看成是驱动工具底层逻辑的引擎。
- 和一个前端UI库
为什么要有一个单独的库?
嗯,每个界面都需要一个不同的UI。桌面和移动设备之间的差异是令人难以置信的,而且不同的设备之间也有差异。这就是为什么我们也有React Native,它作为移动设备的UI库。
什么是React.js?
React.js就是普通的React,只是叫法不同而已。
为什么?
嗯,React是在JavaScript中构建的,所以有些人在谈论它的时候会加上js,但他们的意思还是一样的。React = React.js
React是容易还是难学?学习它的最佳方法是什么?
这确实取决于你之前是否有其他语言的经验。
比如说
如果你已经有了JavaScript经验,那么你会发现React比Angularor Vue更容易学习。
为什么呢?
因为React的设计是模仿JavaScript的,所以很容易被JavaScript开发者采用。它实际上是在考虑这些用户以及他们目前的工作方式的基础上建立的。
与Angular这样的东西相比,你必须学习错综复杂的模式,以及在Angular之外不存在的特定的语言编写方法,这意味着有一个稍微陡峭的曲线。
也就是说,即使你对JavaScript没有任何经验,你也不会感到困难,因为React的学习并不太复杂。只有当你想成为它的主人时,困难才会真正出现,因为在扩展时有一些困难(与JavaScript相同)。
也就是说,如果你能达到React的经验水平,那么你会看到很多非常有利可图的工作机会,看到从11万美元到16.7万美元/年的跳跃。
TL;DR
React很容易学习,但很难掌握,如果你有JavaScript的经验,你会更快地掌握它,因为它感觉非常相似。
有哪些大规模React网站的例子?
最好的例子就是Facebook本身
Meta为他们自己的网站和应用建立并使用React,它向你展示了一旦你掌握了React,它的规模有多大。
有数以千计的组件和数以百万计的活跃用户,这恰恰说明了React在纵向和横向上都能很好地处理规模。
在React中使用的最好的组件库是什么?你更喜欢使用哪个UI库?
我非常喜欢使用Material,我知道这是个很普通的答案,因为Material可能也是其他用户中最受欢迎的。

为什么它这么受欢迎?
嗯,Material是谷歌自己的组件库,但它的主要好处是它的文档,即他们如何确定Material作为一个设计系统的工作方式。
所以让我解释一下
如果我们考虑一个网站和它是如何建立的,我们有所有这些使它工作的组件,如按钮和元素等。
现在,规定这些组件的外观、大小、如何缩放、使用的颜色等的规则都是由设计系统决定的,而Material将所有这些已经封装在一个组件库中,你可以重复使用,而且它的设计非常好。
说实话,设计师和工程师们考虑到了一切。Material是第一个考虑到Z-index的组件库,它影响了用户对屏幕上深度的感知。也就是说,哪些元素在前面,哪些在后面。
为什么要考虑?
因为它不仅有助于提供更好的视觉美感,而且还有助于提供可以改善用户体验的上下文线索,让他们知道什么可以被按下或互动。
React的主要优点和缺点是什么?
这是一个困难的问题,因为我想说React的主要优点也是它在某些方面的缺点。
所以让我解释一下
与Angular等其他框架不同,React并不真正关心你如何管理其他东西。

它不关心你如何处理路由、数据管理或其他任何事情。它所关心的是你如何处理渲染UI,以及管理UI交互方式的元素。
这意味着
- React在它所设计的方面是非常专注和强大的。
- 而且,它也很灵活,很容易上手,这意味着你可以引入其他工具,甚至建立你自己的工具来使它工作。
这意味着你可以挑选和构建你喜欢的方式,但这也曾经是一个缺点。
为什么呢?
嗯,由于这种灵活性,一个公司的React项目在另一个公司可能有很大的不同,这可能会造成一点学习曲线,因为你需要学习公司可能使用的其他工具。
最近,随着特定的工具成为其他项目的标准,这个问题变得越来越少,但它仍然可能发生。
你如何决定在React中使用哪个状态管理库?
有这么多的状态管理选项,而且它们都有各自的噱头,所以可能会让人有点不知所措。
也就是说,80%的情况下,不会有太多的技术限制,让你选择一个选项而不是另一个。通常,关于React库的状态管理,你会遇到的主要对话是(你甚至可能在React面试中遇到这个问题),即
"Redux与React Context的优势是什么?"
澄清一下,Redux和Context是两种比较流行的状态管理形式,通常选择它们只是因为人们已经有了经验,但也因为它们的用途很好。
那么,我们如何选择使用哪一种呢?
React默认带有React Context,而Redux可以说是建立在Context的基础上,并扩展了一些你可以用它做的事情,而且实际上是由React的一位首席工程师开发的。
我最好的建议是为目标选择合适的工具,看看每个工具的功能和你可能要做的任何权衡。
但说实话,Redux可能是最好的选择,也是大多数React开发者的 "非官方 "选择,而且可能是你应该学习使用React的第一个状态管理,无论是从功能的角度,还是从工作机会的数量来看。
举例来说
如果我们看一下Web开发,其中一个主要目标是能够扩展工程团队,让人们尽快开始交付功能,对吗?那么,Redux已经被一次又一次地扩展了,可以轻松地处理这个问题。
React比Angular、Next.js或Flutter更好吗?
让我们来分析一下这些东西...
React vs Angular
如果你正在开发一个企业应用程序,并且你有很多具有Java背景的开发人员,那么Angular可能是你最好的选择,因为有一些相似之处。
也就是说,如果你没有具有Java背景的人,那么React就更容易和更快地学习和掌握。
React与Next.js
Next.js是一个做服务器端渲染React的框架。
因此,对于普通的React,你在网页浏览器中做所有的渲染和重新渲染,这有助于使网站快速加载和响应。如果你还记得以前,这是React的主要目标之一,旨在帮助绕过缓慢的服务器时间。
然而,从那时起,服务器已经有了很大的改善,你可以在浏览器中做所有的事情,但这并不意味着你必须这样做。
我推荐Next.js在你需要建立有大量组件和动态及静态资源的巨大网站时使用。这样你就可以考虑将服务器端渲染与基于浏览器的动态渲染结合起来。这样你就能得到这两种选择的好处,同时也能节省静态元素的资源。
也就是说,只是因为你可以在Next.js中获得这样的高性能,你只有在你的网站需要所有这些因素时才真正需要这样做。在那之前,你完全可以使用React,可以绕过Next.js的复杂性。
React与Flutter
Flutter是谷歌制作的一种新语言,它有其优点和缺点,但很难用一种语言来衡量一个框架。
不过我想说的是,由于Flutter是最近才诞生的,所以Flutter开发者的工作机会并不多。

你会认为这意味着Flutter开发者的工资会更高,但实际上它的平均工资比React低。
