2013-10-18 22 views
0

我從現有(RESTful)API構建前端Web應用程序。從現有API構建Web前端

什麼是去了解這一點的最好方法是什麼?我假設新的標準方式是通過像backbone.js這樣的東西來實現的。

我也希望網頁是不同的網址,並沒有一個單一的頁面應用程序。也就是說,我猜這是不好的做法,要求頁面,然後發射異步api請求,當我們也可以加載數據從服務器啓動,對不對?我應該考慮什麼樣的體系結構或技術,以便我可以重新使用API​​,但不會將兩個請求背靠背發送給服務器,一個負載頁面,一個負載數據?

回答

0

骨架和其他JavaScript「MV *」框架無疑是高性能事件驅動用戶界面的絕佳選擇。您可以使用此設計並使用不同的頁面和URL。它使得在給定頁面上執行異步操作變得更加簡單快捷,因爲您將在JSON模型中使用相關數據,並在數據更改時視圖自動更新的環境中使用發佈/訂閱模式。這種類型的設計的另一個優點是您可以在模型中獲得數據,而不是走DOM來獲取數據。

0

除了Girardi的回答,您對於在初始頁面加載時執行兩個請求(一個用於頁面,一個用於實際數據)的擔憂是一個實際問題。

其中一個解決方案是將初始數據直接引導到頁面中,以便您可以跳過附加的異步請求。這被稱爲模型引導。例如,你可以把和附加<script></script>標籤,該標籤將持有的自舉模式:

<script> 
    window.I_MODEL = [ 
     {id: 1, name: "foo"}, 
     {id: 2, name: "bar"} 
    ] 
</script> 

進而構建在服務器端,並與一些模板機制幫助打印序列模型對進入頁面模型。

搜索骨幹模式引導,這裏是一個從右到了點例如:http://ricostacruz.com/backbone-patterns/#bootstrapping_data

+0

感謝您的回覆!這絕對是我通常爲這種類型做的事情,但是,我正在使用同一臺服務器上已經構建的API,並且不想爲初始數據集複製代碼。我不確定是否已知的做法是在我的Web應用程序控制器中將API類與API控制器分開調用。即使如此,API控制器可能會在JSON返回之前改變事物,所以我不能保證類似的輸出。你明白我的意思嗎? – tommybananas

+0

我更喜歡因爲我的web服務只是業務層方法的包裝。並且從不改變他們得到的數據,所以在我的情況下,直接調用它們是安全的,它們的輸出將是相同的。我不熟悉你的環境,我不知道你的後端有什麼可以或不能保證什麼,但是這個場景呢:你有2個REST服務,一個給JSON和一個產生網頁的服務。當有人請求網頁時,在你返回之前,只需調用其他服務來響應JSON。採取該回應並將其呈現在頁面中。 –

-1

嗯,這是不是一個不好的做法,加載頁面,然後再請求異步數據。使模板(html)和數據調用分開,您可以最大限度地利用localStorage,browserCaching的好處。 Backbone不會爲您的應用程序注入任何魔力,它只是提供了一個框架來組織您的代碼,並幫助避免一次又一次的樣板代碼。

+0

我認爲總是有2個(或更多)請求是不好的做法。這可能是實踐,但這並不是一個好習慣。 – Halcyon

+0

@FritsvanCampen每種方法都有優點和缺點。如果我想緩存模板的功能使用讓他們分開將永遠幫助你。那麼,連接和儘量減少請求的數量是好的,但如果你有一個應用程序的Gmail/Facebook的大小,這是不實際的。 –

+0

你是對的,這是一個像facebook一樣的完美合理的解決方案。然而,我正在假設它不適用於這個應用程序,因爲我沒有使用Facebook大小的數據,而對於我的應用程序來說,這將浪費時間。 – tommybananas