哪个 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 框架最好地处理关系数据?的主要内容,如果未能解决你的问题,请参考以下文章

目前nodejs都有啥框架呢?哪个最好

10个最好的 Node.js MVC 框架

10个最好的 Node.js MVC 框架

做webapp开发,性能和效率最好的框架和打包app平台分别是哪个

如何在 dojo mobile(自定义控制器)中最好地应用 MVC 架构?

前端框架类库工具大比拼