2015-06-05 151 views
6

當我用node.js創建一個簡單的網站時,我很好地使用視圖引擎(例如.jade)和向其提供數據的控制器(例如,簡單的待辦事項列表)。但是,如果我決定添加AngularJS作爲客戶端框架,那麼似乎我必須在後端實現REST API以從中獲取數據。幾乎我在AngularJS上看到的所有示例都具有以下基本架構:客戶端(角)通過REST API與服務器進行通信。AngularJS可以在沒有REST API的情況下使用嗎?

AngularJS可以在沒有REST API的情況下使用,如果是的話,我應該做還是應該避免它?是否有沒有REST API後端使用AngularJS的建議/最佳實踐?

+0

爲什麼要使用非RESTful後端爲您的應用程序? – ThiefMaster

+1

只需將REST API和Angular.js的node.js用作客戶端框架,即可與後端進行通信。如果你害怕REST,請記住,這是無痛苦的工作。 – softvar

+0

@ThiefMaster,因爲我已經有了在控制器和jade文件中實現的node.js + jade + logic的工作應用程序(比如if/else,loops等等)。將AngularJS添加到混合中將需要重寫當前的邏輯以使其可以從REST API獲得。我想知道如果沒有這種努力,我可以使用AngularJS。 – matori82

回答

5

絕對。即使您從未使用$http服務與您的服務器交談,Angular仍然可以在您的網站上做很多事情。您仍然可以利用這些實用程序來幫助管理DOM。

也就是說,大多數現代應用程序需要從服務器獲取數據。有很多原因可能會導致你需要這樣做。例如,如果您的用戶需要註冊,那麼您需要在某處存儲用戶名和密碼。那個地方應該只在你的服務器可以訪問的數據庫中。然後你的服務器會提供一些URL,你可以通過Angular的$http服務與之交談。

如果您確實有一個可以撥打服務器的應用程序,但您想要關閉網絡通信以進行測試,則可以撥打mock$http來調用回覆。爲了確切的目的,Angular提供了一個$httpBackend。您可以使用它設置假裝URL以假裝對您的$http呼叫做出響應,以便您的$http呼叫不知道它們實際上沒有與服務器通話。

authRequestHandler = $httpBackend.when('GET', '/auth.py') 
         .respond({userId: 'userX'}, {'A-Token': 'xxx'}); 

適合在測試期間測試沒有REST後端的代碼。

1

代表性狀態轉移的簡稱REST基本上是事物或資源而不是動作。是的,AngularJS可以在沒有REST API的情況下使用。

1

您可以使用nodeJS作爲您的restful API和AngularJS作爲您的javascript框架。

即使沒有一個RESTful API AnguarlJS是在一個項目中使用,雖然以它的全部潛力(完全縮放的Web應用程序)的使用它,那麼你就需要一個RESTful API一個非常強大的工具。

0

使用$ HTTP的REST風格的API不REST的API 使用$資源

相關問題