哪个 Javascript MVC 框架最好地处理关系数据?
Posted
技术标签:
【中文标题】哪个 Javascript MVC 框架最好地处理关系数据?【英文标题】:Which Javascript MVC framework best handles relational data? 【发布时间】:2011-11-07 01:14:18 【问题描述】:我希望首次尝试 javascript MVC 框架,例如 Knockout、Backbone.js、Spine、JavaScriptMVC 等。
我已经开始查看可用于这些框架的一些文档,但我很难找到它们如何处理关系数据的示例。他们中的大多数都以 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;
到目前为止我看到的模型示例似乎没有处理关系的问题:外键、id 生成等。上面的示例是多对多关系,但我会很高兴甚至支持一对多关系。
我真的很喜欢这些框架提供的东西:
对模型的更改会自动更新视图(即 DOM) 模型发生变化时自动更新服务器上的模型 清晰的代码组织 等等……但是,我想就哪个框架最好地处理模型之间的关系提出建议,并提供一个示例。
谢谢!
【问题讨论】:
【参考方案1】:虽然 Backbone (intentionally) 不能非常优雅地支持包含其他模型/集合的模型,但 Backbone-relational 增加了对它的支持并且运行良好。查看他们的文档。
【讨论】:
【参考方案2】:Sproutcore 有一个客户端数据存储,它允许您在 toOne、toMany 和 ManyToMany 关系中将不同的模型对象相互关联。您实际上可以针对存储编写查询,这些查询会在数据更改时自动更新。同样,如果您进行更新并且模型对象发生更改,则附加到该模型(通过控制器)的任何视图都将自动更新)。此外,SC 具有嵌套存储功能,可让您无缝放弃更改,用于“保存或取消”类型的工作流程。
http://guides.sproutcore.com/records.html
【讨论】:
@adam,你是什么意思?它是一个功能齐全的应用程序框架,所以它有很多东西。我认为他们正试图将 Sproutcore2 降低到 50kb... 这实际上来自 ember.js 使用 ember 数据。 Sproutcore 只是在其上构建了一个 ui……因此,如果该数据模型对您来说听起来不错,请查看 ember 框架。一旦你通过了学习曲线,它就会非常甜蜜。【参考方案3】:我不认为您正在寻找 MVC 本身,我认为您正在寻找具有良好“M”的东西。所以你可能正在寻找像我们的 Ext JS 模型关联这样的东西。 (当然,Ext JS 是一个完整的框架,所以如果你想在 jQuery 上添加一些东西,它不适合你。)
这里是models in Ext JS 4 的文档,这里是top level guide for Ext JS 4 MVC
【讨论】:
以上是关于哪个 Javascript MVC 框架最好地处理关系数据?的主要内容,如果未能解决你的问题,请参考以下文章
做webapp开发,性能和效率最好的框架和打包app平台分别是哪个