2012-04-17 71 views
6

我使用.NET MVC我所有的服務器端邏輯和服務進行初始頁面,但我的應用程序是在客戶端,所以我已經通過Backbone.js的這被證明是非常重非常有用。結合Serverside集團MVC與Backbone.js的

我不確定如何構建我的系統來整合兩種技術。我看到它的方式我有兩個選擇

  1. 廢料在服務器端從MVC「V」,返回JSON數據到 客戶端頁面加載並使用骨幹客戶方模板建立 的GUI從基礎的JSON /骨幹模型。

  2. 返回完全在.NET MVC中呈現的服務器的初始頁面。 也返回來使它們並調用 collection.reset({silent: true})方法連接起來, 返回的數據視圖中的數據。我是否正確地認爲這將使 允許我更改使用視圖上的添加/刪除/更改 處理程序?

1困擾我,因爲我害怕放棄服務器端MVC的任何部分,它的核心技能在哪裏。

2麻煩我,我擔心我可能會通過使客戶端服務器上的兩個不同的渲染方法引入風險和工作。

什麼是將服務器端MVC與backbone.js 1或2或其他方式相結合的正確方法?

+1

我們成功地使用了asp.net MVC以及require,backbone和handlebars。當我們開始使用骨幹網時,我們無法完全放棄我們的服務器頁面,因此我們使用該初始命中來佈局默認html,並使用強類型視圖來引導某些模型或集合。 我們的JavaScript佈局大致反映了我們服務器端視圖的佈局,我們爲每個部分都有文件夾:合同,產品,用戶。每個文件夾都包含每個部分的模型,視圖和模板。 讓我知道你是否有更具體的問題或疑慮。 – MrGrigg 2012-04-17 14:55:52

+0

另請參閱:http://stackoverflow.com/a/7711294/48082 – Cheeso 2013-03-12 21:33:37

回答

4
  1. 你並不是真的報廢了V,你只是將它的表示從HTML改爲JSON。你感到困擾是因爲你對服務器端的東西感覺更加自在,這並不是一個真正有效的問題......你將完成需要完成的任務,並隨時學習/創建Javascript模式。

  2. 這是爲了做這件事,它確實幫助,如果你需要禁用JavaScript回退,或者你的可訪問性原則的約束。你錯過的部分是,一旦加載模型到DOM元素,你將不得不重新渲染頁面。或者,您可以使用爲您處理此映射的工具,但這增加了複雜性,您必須權衡自己。

在骨幹網的招聘使用,我們不一定要支持javascript少的情況,而我們,所以我們只加載初始加載模板+ JS,則讓路由器接管並使用更多的東西像你的第一個想法。因爲聽起來你剛剛開始了,所以幫助我們真正移動的最重要的事情是意識到它是方式更容易對模型進行更改,然後讓視圖訂閱模型更改事件(而不是其他方式)周圍)。

+1

完全同意,在** 1 **中,您仍然保持'V'。還同意我們必須在我們的Backbone應用程序中放棄任何服務器端語言幫助,就像我們應該在與我們的服務器端應用程序層交互的iPhone應用程序中那樣。 – fguillen 2012-04-17 16:11:52

1

我不知道該接受的方式是什麼,但我發現它有問題到V從服務器端結合起來,然後織在骨幹網(等)。在嚴格控制的情況下,它可以工作,但如果你的應用程序在客戶端會非常沉重,我的建議是忘記在服務器端渲染,然後返回JSON,讓Backbone通過某種模板(小鬍子等)處理內容的渲染。

是的,你可以完全控制Backbone事件,所以你將有一個處理它們來做你想做的事情。

我聽說你放棄了服務器端的部分技能。我也是這樣,但是如果這是你的項目所要求的,我想你會發現讓服務器端渲染更容易。

祝你好運!