这是我之前提出的问题的后续。
假设我有一些javascript
代码,它在客户端(浏览器中)正常运行。 这段代码使用浏览器API进行大量XHR
调用。
现在,我想在node.js
中运行此代码。 node.js
是否像浏览器一样提供XHR
API?
这是我之前提出的问题的后续。
假设我有一些javascript
代码,它在客户端(浏览器中)正常运行。 这段代码使用浏览器API进行大量XHR
调用。
现在,我想在node.js
中运行此代码。 node.js
是否像浏览器一样提供XHR
API?
你并不需要使用 XHR,因为你可以使用自带于 NodeJS 的 http.request,它能够发送包含头信息和请求体的GET、POST和PUT请求。
这是文档链接:http.request。
在本地,Node.js并没有提供浏览器的XHR API。不过,有一个名为 xmlhttprequest 的node模块可以实现这个功能。
如果文件存在于服务器上,你可以使用fs.readFile或fs.readFileSync方法来读取文件。
如果文件存在于远程服务器上,那么你可以使用像request这样的模块来进行异步的XHR类型请求: https://www.npmjs.com/package/request。这需要对代码进行一些重写。
如果你想要最小限度地改变客户端代码,那么使用xmlhttprequest node模块可能是最好的选择。它可以在node中实现浏览器的XHR API。
Axios
。它可以在客户端或服务器端使用,而不需要任何依赖项或代码更改。Node.js 中的示例代码。
const XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest
/* --- */
let xhr = new XMLHttpRequest()
xhr.open( 'GET', 'https://example.com' )
xhr.onload = function() {
if ( xhr.status == 200 ) {
console.log( xhr.responseText )
} else {
console.log( `Error: ${xhr.status}` )
}
}
xhr.send()
fs.readFile
简单地读取文件。 - jcubicfs.readFile()
与XHR无关。如果您想在Node中使用XHR,可以在npm上找到几个模块来实现这一点。但是,请注意整个API可能不同,例如因为Node只有异步网络I/O,所以不会有同步API。 - mscdexfs.readFile()
来获取它们。 您不需要HTTP请求来获取这些文件。 - jcubic