reactjs react.js和 AJAX 之间的差异

8ulbf1ek  于 2023-01-08  发布在  React
关注(0)|答案(5)|浏览(125)

当我在谷歌上搜索React.js时,我得到的是:React.js是一个用于创建用户界面的框架。如果网站的某个特定部分经常更新,这意味着我们可以使用react。但我很困惑 AJAX 只用于此。我们可以使用Ajax更新网站的某个部分,而无需刷新页面。对于模板,我们将使用handlebar和mustache。有人能给我解释一下reaction与 AJAX 的不同之处吗?为什么我们应该使用它?

cig3rfwq

cig3rfwq1#

简而言之,React使用 AJAX ,它们并不像你问的那样相关。
继续阅读什么是React,什么 AJAX ,以及如何用它们来制作现代Web应用程序的速成班。
这可能是一个比你所寻找的更简单的解释,但对于其他任何人谁可能会感到困惑...

* AJAX 和飞机 *

想想飞机。飞机最重要的部分是它能飞。但是飞机还有轮子。轮子有一个非常重要的作用,因为没有轮子飞机就不会飞也不会着陆。尽管飞机在空中能做很多很棒的事情,但是没有轮子也没什么。
这与React和** AJAX 的关系是一样的。React是飞机,AJAX是轮子。但是,你知道,其他东西也有轮子。拖拉机、汽车,甚至一些船也有轮子,它们都非常重要,没有轮子就很难用。AJAX对于其他网络技术也是如此,但是当你谈论飞机时,它的"轮子"通常是离你最远的东西。
所以
React之于 AJAX ,就像飞机之于轮子**。
但让我们来谈谈 AJAX 。它是什么?为什么它如此重要?它在今天的网站中是如何使用的。然后我会展示React是如何使用它的。然后向你展示React做了什么,这是如此令人印象深刻,它让你忘记了AJAX -就像一架飞机的轮子。

还记得90年代的网站吗?

当你点击任何东西的时候,一个新的页面会被加载来显示你点击的效果--即使它什么都不是。Here's an awesome example。转到那个页面,然后点击周围的东西......看看点击是如何把你带到一个完全不同的页面的?这就是 AJAX 之前的互联网。
现在,看看 * 这一页 :每个答案旁边都有一个向上箭头......继续单击其中一个......请注意,页面不会重新加载,但会向您提供反馈: 箭头变为橙子 *。这可能看起来微不足道,但它代表了Web技术的巨大进步: AJAX ,或者更准确地说:Web开发 AJAX 方法。
AJAX 方法允许这种情况发生!现在这不是什么大问题;它是网络体验的固有特性,很难想象没有它的互联网。

* AJAX 和钟面 *

AJAX 方法论的一个很好的类比,以及它如何改变了网络,是一个简单的手表,或挂钟...想象分钟,小时和秒针在钟面上移动来显示时间。现在,假设秒针的每一个动作都导致整个时钟被摧毁和重建?

  • 所有的努力 * 破坏和重建只是为了显示一个微小的变化?!嗯,这将是一个令人发指的资源浪费,这是90年代的互联网。谢天谢地,我们现在有 AJAX 。就像时钟无缝显示时间,AJAX允许网页显示数据的变化立即,而不需要刷新页面;你点击一个向上箭头,它就会变成橙子。2不需要重新加载页面!

最初, AJAX 只是一个将现有技术结合在一起向用户显示简单更新的名称,但它已经成为Web体验的固有特性,除非你知道你在做什么,否则你甚至不会知道你在使用它。自2015年以来,fetch是实现 AJAX 方法的首选方式。在此之前,它是XMLHttpRequest -尽管JSON更常用于传输数据,因为它不那么冗长。据我所知,JQuery是唯一一种真正支持 AJAX ($.ajax())的Web技术,但您通常不会(也不应该)将JQuery与react应用程序一起使用。
AJAX 就像网页一样工作:
1.用户执行一个操作(如按向上箭头)
1.客户端(Web浏览器,如Firefox)从服务器(如堆栈溢出(SO)服务器)请求数据。
1.服务器处理请求(更新数据库以记录赞成票)。
1.服务器向客户机发回一个响应,说明操作是否成功。
1.最后,一些已经加载到网页中的代码决定如何处理这些新信息(在我们的示例中,javascript将向向上箭头添加一个类,CSS规则将规定具有该类的元素为橙子)。
1.用户只能看到橙子的箭头,其他所有步骤都被隐藏起来,看起来就像一个无缝的、响应迅速的动作。

* 单页应用程序 *

由于我们不会在每次单击时重建整个页面,因此您可以将有关网站的信息存储在浏览器中。这可以在您的整个访问过程中以及以后的访问过程中使用。
当你第一次访问Stack Overflow时,所有的CSS、JS和HTML都被加载了。这三种语言定义了从服务器来回发送的数据的样式(CSS)、行为(JS)和结构(HTML)。猜猜数据是如何发送的! AJAX 。

这就是现在大多数网络的工作方式。Google,Facebook,Amazon,Youtube,Reddit,每个用WordPress和WIX构建的网站,甚至Stack Overflow -他们都使用这个基本的范例来高效地向用户交付他们的网站。不同之处在于如何构建和管理单页面应用程序。

* Reactjs*

React是用于构建和维护Single-Page Applications的JavaScript库。
但这并不是一个大问题,React的大问题是它如何让你构建应用程序...
基本上,你先单独构建,然后再将它们组合在一起:组件组合在一起形成一个应用程序。所以看看这个页面上所有答案的完全可信但虚假的代码:

answerArray.map(a => <Answer answerData={a}></Answer>)

这一行显示了本页的大部分信息。这是一个大问题。开发人员在Stack Overflow创建了他们自己的组件,称为“Answer”,它唯一的工作就是显示Answer。你在循环中运行它,然后砰的一声,所有错综复杂的答案都被***抽象了***,隐藏在Answer组件中,它与其他组件完全分离。
现在看看这个:

<App>
  <Header />
  <LeftSidebar />
  <Question>
    { answerArray.map(a => <Answer answerData={a} />  )}
  </Question>
  <RightSidebar />
  <Footer/>
</App>

这是整个堆栈溢出站点。
每个标签(Header、Question、Answer等)都是一个组件,这些组件是完全独立的,并且具有自包含的代码,但是在这里它们一起使用来构建更复杂的应用程序。

* 组成 *

React的一个重要概念是组合,我们刚刚在上面定义了它。“组合允许您通过组合小的和集中的功能来构建更复杂的功能”(flaviocopes)。我们的应用程序由更小的组件组成。
同样需要注意的是,每个组件都包含自己的功能,也就是说,如果用户单击某个按钮时出现警告,则该按钮和显示警告的代码位于同一个组件中。

* 函数式编程 *

令人惊讶的是,我们也已经定义了它。函数式编程,就我们的目的而言,意味着1。对象;(2)行为方式;都在同一个地方。就像上面的按钮例子。点击一个按钮,得到一个警告。而且这些都在同一个文件中。
这与React之前的开发不同,在React之前,所有的按钮都在一个文件中,而按钮的所有效果都在另一个文件中。这不一定是一种错误的方法,但对于Web开发来说,考虑自包含的构建块要比考虑分散的工具更容易。

* 为什么你不应该关心胡子和车把 *

这两项技术已经被React所取代。与React使用 AJAX 的方式类似,但让它变得更简单,“胡子”和“车把”已经在React中,你一直在使用它们,甚至不知道。对我来说,这没关系。有相反的说法,知道从来都不是坏事,所以如果你想的话,可以进一步调查,但这已经够长了。我就说这么多。
相反,我将告诉你3个你应该关心的技术。
□ □ * 你应该关心的是... *

节点

Node.js的主要特点是它可以在浏览器之外执行JavaScript。这很了不起,对吧?事实证明,这是Web开发人员有史以来最有影响力的进步之一。事实上,下载Node通常是在下载React之前完成的。
节点之所以重要,有两大原因:
1.它可以让你下载其他东西
1.它允许您在将JavaScript发送到浏览器之前对其进行处理
我可以写一页又一页关于Node的文章,但你从中得到的结论应该是“Node很重要,我应该关注更多关于Node的知识以及它与React和Web开发的关系。”

国家预防机制

NPM并不代表“节点包管理器”,但它应该代表,因为这正是它所做的。React,SASS,Angular,Vue,几乎这里提到的所有东西你都可能使用npm来安装和保持更新。

网络包

Webpack是一个“模块捆绑器”,它把你所有的js和css文件都写到一个文件里,这样你就只需要担心写一个<script>标签了。
每个React组件都至少有一个与之关联的js文件。每个组件也应该有自己的文件。跟踪所有这些文件是非常费力的。Webpack会为你做这件事,它只会让你的生活更轻松,所以尽早了解它,不要回避它。
这是React应用程序固有的特性,大多数时候它只是在工作,你甚至不会知道它。例如,create-react-app会自动安装它,不需要你做任何事情-Babel也是如此。
巴别塔
将所有代码转换为ECMA 5,以便大多数浏览器和这些浏览器的大多数版本都可以读取。
同样,它可以和npm一起安装,或者如果你只是想玩玩React,而不是像这样陷入细节中,你可以运行create-react-app,它只会使用自动设置,在你学习的时候不会打扰你。
∮他们让事情变得更简单∮

NPM、Webpack、Babel和许多其他Node软件包的存在只是为了让你的生活更轻松。构建Web应用程序需要大量的维护--或者是一些小的、非编程的烦恼,通常你甚至不需要考虑这些烦恼。
尽量不要被新的软件包吓倒,因为使用它们的力量意味着要花无数的时间去做更有趣的事情。

* 结论 *

希望这篇文章能帮助你了解React、 AJAX 和Web应用程序开发的本质之间的区别。React和AJAX没有可比性,但是React使用AJAX,或者更确切地说,你--开发人员--在React中使用AJAX来获取数据,而不需要重新加载页面。
AJAX 和其他技术对Web应用程序的发展起到了巨大的推动作用,但由于它们对应用程序的绝对必要性,它们被大量吸收到新技术中,以至于您甚至不必了解它们就可以获得它们的好处。
我的目标是纠正你学习道路上的一些错误观念;解释网络开发现状的“原因”;并引入您没有提及但应该了解的技术:节点,npm,巴别塔。
如果你想继续学习,我强烈建议你在React上做一个教程。我在platform.ui.dev/上做过一些,喜欢他们的学习方法和付费结构(我还没有得到报酬)。祝你好运,我希望这对你有帮助。

hjqgdpho

hjqgdpho2#

AJAX 用于刷新网页,而无需重新加载:它向服务器发送请求,但是通常由JavaScript处理响应,该JavaScript在浏览器上动态地显示新元素,而不必重新加载整个页面。
React是一个javascript库,它用接口组件来动态更新页面。组件是通过javascript交互或通过服务器的 AJAX 请求来计算的。因此ReactJS也可以使用Ajax请求来更新页面。
Mustache和Handlebars与ReactJS有一点不同,主要目标是转换组件中的模板,并将其显示在页面中,它还可以使用 AJAX 获取数据(用于获取模板或json数据)。

5ktev3wc

5ktev3wc3#

** AJAX **

我们使用 AJAX 发送http请求。我们不能单独使用Ajax重新呈现页面的特定区域(DOM)。我们需要jQuery在ajax调用得到响应后重新呈现页面。实际上,比较jQuery + HTML和React.js要比比较ajax和React.js好得多。

Reactjs

react.js的作用是将页面(DOM)分成小块(组件)。例如:-个人资料图像区域、主导航、边栏、文本字段、按钮等。从大块到小片。最重要的是,我们可以将功能绑定到这些组件中。例如:-假设用户需要一个弹出窗口,通过点击上面的“个人资料图像区域”来上传个人资料图像。我们可以编写一个函数来打开弹出窗口。我们也可以编写另一个函数来上传个人资料图像到数据库。这样我们就可以在React.js中使用 AJAX
请按照tutorial进行操作。

ftf50wuq

ftf50wuq4#

简单来说,React是Facebook开发的一个JavaScript库。由于它有很多扩展,所以通常被认为是一个框架,但官方文档将其标记为一个用于构建用户界面的库。另一方面, AJAX 根本不是一个库、一个框架或一种语言。Ajax是程序员使用的一种技术,用于调用Web API,而不会中断代码流。最后,JavaScript代码逐行同步运行, AJAX 在同步代码中异步运行,但不会暂停代码,也不会让代码等待API调用的发送和接收。发送和接收数据都是在后台完成的,因此您不必担心获取数据所需的延迟。实际上,您可以在React代码中使用 AJAX 。 AJAX 使用Fetch来调用API,您可以使用各种方法来处理从API接收到的数据,例如.then和.catch或Async/Await。还有其他第三方方法可以通过 AJAX 调用API,例如使用Axios。我建议您观看有关如何使用这些不同工具的视频,因为当您弄清楚它们的工作原理时,你会发现React和 AJAX 可以一起使用来构建一个很棒的应用程序。希望这对你有帮助,请按照你对这个答案的看法投票。我对这个网站还很陌生。

jogvjijk

jogvjijk5#

如果你已经向下滚动到这一点,你可能会有这种感觉,错过了一些东西,在这些答案是伟大的,虽然。很难理解 AJAX 是什么。我不得不在Wikipedia上查找它。你可以在那里找到一个非常好的解释。我还读了Jesse James加勒特2005年的存档文章,他在那里创造了这个术语( AJAX ),并将其描述为Web应用程序的新方法。要深入研究,您可以访问MDN
异步请求在今天的Web开发中是如此明显,以至于很难想象没有异步请求的网站。这是理解 AJAX 的关键。那时XMLHttpRequest API还是个新东西。现在我们有JavaScript中的Fetch API,或者我们可以使用Axios。Google Maps方法在2005年是革命性的。你可以放大Map,抓取Map,并滚动。这种不需要页面重新加载的即时响应是 AJAX 方法的结果。它由一组技术组成,如XMLHttpRequest,DOM,HTML & CSS,JavaScript。
正如你所看到的 AJAX 是一个古老的术语,用来描述一种使应用程序更具响应性的Web开发方法(20多年前)。因此,无论你使用什么框架(Vue、Angular)或React等库,只要你对API的调用是异步的,你就可以使用AJAX方法,而且它们不会阻止用户与你的应用程序交互,这是今天的标准方法。
顺便说一句,React是一个库,因为它没有内置的状态管理工具,也没有路由工具,这与Ember.js、Angular或Vue不同。我们经常谈论React堆栈,这是一组用于构建react应用程序的独立工具(Redux、Zustand、上下文API、react-router)。

相关问题