2015-07-01 113 views
3

我有一個純粹的前端JavaScript項目,其中包含許多封裝與各種RESTful Web服務的不同交互的模型。我的目標是將這些模型放入他們自己的npm模塊中,以便讓他們在我正在編寫的新節點應用程序中使用服務器端。同構處理HTTP請求javascript

這些模型使用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: ... 
}; 
+0

您可以(有條件地)使用通用的NPM模塊來請求xmlhttprequest。這是我如何使用相同的API客戶端瀏覽器和節點... https://www.npmjs.com/package/xmlhttprequest。有了這個,你甚至不需要瀏覽器,但它仍然可以使用它... – dandavis

回答

1

一個標準有Superagent。無論您在客戶端(xhr)還是服務器(http)上,API都是相同的,因此無需複製代碼或檢查要使用的協議。還有一些圖書館也將它變成承諾,這非常好。