3

我有一个纯粹的前端 javascript 项目,其中包含许多模型,这些模型封装了与各种 RESTful Web 服务的不同交互。我的目标是将这些模型放入它们自己的 npm 模块中,以便让它们在我正在编写的新节点应用程序中使用服务器端。

模型使用 XMLHttpRequest 对象,这显然在服务器上是未定义的。我的模型中不能 require('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: ...
};
4

1 回答 1

1

一个标准是Superagent。无论您使用的是客户端 (xhr) 还是服务器 (http),API 都是相同的,因此无需复制代码或检查要使用的协议。还有一些库也可以把它变成 Promise,这真的很好。

于 2016-05-13T02:12:27.253 回答