2015-10-19 30 views
0

假設我想使用角度創建ToDo列表。我有一個REST API,它將數據存儲在數據庫中,並提供基本的操作。現在,當我想將角度應用連接到REST api時,我發現有兩種方法可以在一些教程聯機後執行此操作:Angular.js只在前端或後端處理數據

1.僅在後端處理數據:創建具有getAllTodos功能的服務。此功能直接附加到示波器上(例如,在ng-repeat中使用它):

var getAllTodos = function() { 
    //Todo: Cache http request 
    return $http...; 
} 
var addTodo = function(todo) { 
    //Todo: Clear cache of getAllTodos 
    $http... 
} 

2.數據也在前端處理。有一個初始化函數可以初始化服務中的待辦事項變量。

var todos = []; 

var init = function() { 
    $http... 
    todos = //result of $http; 
}; 

var getAllTodos = function() { 
    return todos; 
}; 

var addTodo = function(todo) { 
    $http... 
    todos.push(todo); 
} 

我在幾個教程中看到了兩種方式,但我想知道什麼是最好的方法?第一個用於許多教程,作者從一開始就考慮將其附加到REST API。第二種方法通常在作者最初想要在前端創建功能並且後來想要使用後端永久存儲數據時使用。

兩種方式都有其優點和缺點。第一個減少了前端和後端的代碼重複,第二個允許更快的操作,因爲它可以先處理前端,後端可以通知事後更改。

//編輯:前端是我的Angular.JS客戶端,後端服務器上的REST API。

回答

0

您需要前端和後端功能。在前端,您準備發送數據,並在後端向服務器發送請求。

1

分離前端和後端通常是出於安全原因。您可以將Backend定位在單獨的機器上,然後將對該機器的訪問限制爲僅來自前端的呼叫。理論是,如果前端遭到破壞,後端的風險因子就會降低。事實上,如果有人損害了網絡中的任何一臺計算機,那麼整個網絡在某個層面上都處於危險之中。

後端/前端分離的另一個原因是通過後端向多個前端客戶端提供數據庫訪問。您有一個可訪問數據庫的單一後端以及訪問後端的前端或不同前端的多個副本。

您的最終設計需要考慮到可能的安全風險以及部署和版本控制。使用多層方法,您可以部署各個前端,而無需刪除後端,並且還可以「無需停機時間」重新部署應用程序的某些部分。應用程序的設計越靈活,部署可能會更復雜。您的應用程序的需求將取決於您是在編寫簡單的博客還是大型企業應用程序。