【问题标题】:is AJAX available in node.js - and whyAJAX 在 node.js 中可用 - 以及为什么
【发布时间】:2014-08-17 08:58:31
【问题描述】:

我有基于浏览器的 javascript 背景,想熟悉 node.js。据我所知,node.js 是一个框架,基于 V8 引擎,提供服务器端 javascript 以及一些内置模块。

我的问题是:node.js 是否支持 AJAX 调用?为什么/如何完成?当然,节点可以处理传入的 AJAX 请求,就像所有其他服务器端技术(python、ruby、php、j2ee)一样 - 但我问的是它是否可以触发 AJAX 调用。

JavaScript 是一种事件驱动技术(本质上是异步的)。浏览器需要(从服务器)获取外部数据,这就是他们使用XMLHttpRequest 的原因。由于是服务器端,node.js 不必触发 AJAX,因为它需要调用其他服务器。如果它需要与其他服务器通信,它可以使用普通的套接字/服务来做同样的事情,就像其他技术(python、ruby 等)一样。但是,无论如何,XMLHttpRequest 是内置在浏览器中的,所以也许没有理由将它从节点中删除......也许它可能会以某种方式有用。

我很感激能解释这个话题的答案。

【问题讨论】:

  • AJAX 是一种浏览器端技术。然而,NodeJS 可以使用内置的 HTTP 库发出 HTTP 请求

标签: javascript ajax node.js


【解决方案1】:

node.js 是否支持 AJAX 调用?

Ajax 是在不离开页面的情况下使用 JavaScript 从浏览器发出 HTTP 请求的过程。

由于 Node(在 WWW 的上下文中)通常在服务器上运行,它通常不会这样做。

你可以:

  • 使用 Node 运行 HTTP 服务器并让客户端 JavaScript 使用 Ajax 向该服务器发出请求
  • 驱动浏览器(例如通过 PhantomJS 或 Selenium)并让它加载一个页面,使浏览器执行 Ajax 调用
  • 从节点发出 HTTP 请求

由于是服务器端,node.js 不必触发 AJAX,因为它需要调用其他服务器。

一台服务器与另一台服务器通信的原因有很多

如果它需要与其他服务器通信,它可以使用普通套接字/服务来做同样的事情,就像其他技术(python、ruby 等)一样。

我不记得上一次使用 Python、Ruby 或任何其他语言通过未使用 HTTP(和预编写的 HTTP 库)的网络获取数据是什么时候了。

XMLHttpRequest 是内置在浏览器中的,所以也许没有理由从节点中删除它

Node 不是删除了位的浏览器,因此 XMLHttpRequest 并没有从中删除,它一开始就没有在其中。

Node 有一个内置的 HTTP 模块,可以发出 HTTP 请求,NPM 上有几个库提供替代 API(包括一个 implements XMLHttpRequest specification)。

【讨论】:

    【解决方案2】:

    它不是内置的,但有一个 NPM 模块:https://www.npmjs.org/package/xmlhttprequest

    【讨论】:

      猜你喜欢
      • 2011-08-02
      • 2019-02-17
      • 2013-08-31
      • 2013-05-04
      • 2013-09-02
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      相关资源
      最近更新 更多