以同构方式处理 HTTP 请求 javascript
Handling HTTP requests in isomorphic javascript
我有一个纯前端 javascript 项目,其中包含许多模型,这些模型封装了与各种 RESTful Web 服务的不同交互。我的目标是将这些模型拉到它们自己的 npm 模块中,以便让它们在我正在编写的新节点应用程序中使用服务器端。
这些模型使用了 XMLHttpRequest 对象,这显然在服务器上是未定义的。我不能在我的模型中要求('http'),因为当我尝试为客户端构建时 browserify 会抛出错误。
我如何处理同时适用于服务器和客户端的 HTTP 请求?我想要的是:
var ajax = {
get: function (url, opts) {
if (typeof XMLHttpRequest === 'undefined') {
// is node app
var http = require('http');
...
} else {
// is browser app
var xhr = new XMLHttpRequest();
...
}
},
post: ...
};
一个标准是Superagent。无论您是在客户端 (xhr) 还是服务器 (http),API 都是相同的,因此无需重复代码或检查要使用的协议。还有一些库也可以将它变成 promises,这真的很棒。
我有一个纯前端 javascript 项目,其中包含许多模型,这些模型封装了与各种 RESTful Web 服务的不同交互。我的目标是将这些模型拉到它们自己的 npm 模块中,以便让它们在我正在编写的新节点应用程序中使用服务器端。
这些模型使用了 XMLHttpRequest 对象,这显然在服务器上是未定义的。我不能在我的模型中要求('http'),因为当我尝试为客户端构建时 browserify 会抛出错误。
我如何处理同时适用于服务器和客户端的 HTTP 请求?我想要的是:
var ajax = {
get: function (url, opts) {
if (typeof XMLHttpRequest === 'undefined') {
// is node app
var http = require('http');
...
} else {
// is browser app
var xhr = new XMLHttpRequest();
...
}
},
post: ...
};
一个标准是Superagent。无论您是在客户端 (xhr) 还是服务器 (http),API 都是相同的,因此无需重复代码或检查要使用的协议。还有一些库也可以将它变成 promises,这真的很棒。