4

我期待嘗試,第一次,一個JavaScript MVC框架像KnockoutBackbone.jsSpineJavaScriptMVC哪個Javascript MVC框架最好處理關係數據?

我已經開始看一些文件可用於這些框架和我無法找到他們如何處理關係數據的例子。他們中的大多數使用ToDo列表作爲示例。 ToDo列表很好,但它不包含關係數據。也許一個更好的例子是用兩種配方和成分的模型食譜:

var Recipe = function(){ 
    this.name = "Pizza"; 
    this.description = "A delicious baked, flat, disc-shaped bread topped with tomato sauce and cheese."; 
} 

var Ingredient = function(){ 
    this.name = "Tomato sauce" 
} 

var IngredientToRecipe = function(){ 
    this.recipe = null; 
    this.ingredient = null; 
    this.quantity; 
} 

對於我迄今所看到的模型實例似乎並沒有處理人際關係的問題:外鍵,身份證世代等等。上面的例子是多對多的關係,但即使對於一對多關係,我也會很滿意。

我真的很喜歡這些框架提供的東西:

  • 更改模型自動更新視圖(即DOM)
  • 自動更新服務器上的模型時,它改變
  • 明確的組織代碼
  • 等...

但是,我想在其框架最好HANDL建議es模型之間的關係,並舉例說明了這一點。

謝謝!

回答

1

Sproutcore有一個客戶端數據存儲,它允許您將toOne,toMany和ManyToMany關係中的不同模型對象相互關聯。實際上,您可以針對商店編寫查詢,並在數據更改時自動更新。同樣,如果您執行更新並更改模型對象,則附加到該模型的任何視圖(通過控制器)都會自動更新)。此外,SC具有嵌套存儲功能,可以讓您無縫地放棄更改,以用於「保存或取消」類型的工作流程。

http://guides.sproutcore.com/records.html

+0

SproutCore好像有點重 – Adam

+0

@adam,你是什麼意思?它是一個全功能的應用程序框架,所以它有很多東西。我認爲他們正試圖讓Sproutcore2下降到50kb ...... – hvgotcodes

+0

這實際上來自使用ember數據的ember.js。 Sproutcore只是在它之上構建了一個ui ...因此,如果該數據模型聽起來不錯,請查看ember框架。一旦你超越了學習曲線,這真是太棒了。 –

0

我不認爲你正在尋找MVC本身做的,我想你正在尋找一些具有良好的「M」。所以你可能在尋找類似於我們的Ext JS模型關聯的東西。 (Ext JS當然是一個完整的框架,所以如果你想在jQuery之上撒一些東西,它不會適合你)。

這裏是models in Ext JS 4的文檔,這裏是top level guide for Ext JS 4 MVC

2

儘管Backbone(intentionally)非常優雅地支持包含其他模型/集合的模型,但Backbone-relational增加了對它的支持並且工作得很好。查看他們的文檔。