Sencha Touch能很好地适应像KnockoutJS这样的MVVM模式吗?

Sencha Touch能很好地适应像KnockoutJS这样的MVVM模式吗?,mvvm,sencha-touch,knockout.js,web-applications,Mvvm,Sencha Touch,Knockout.js,Web Applications,我目前正在KnockoutJS上构建一个web应用程序-真的,编程极乐 我已经到了需要添加移动开发框架的阶段,并且一直在考虑我的选择 我目前倾向于使用SenchaTouch,因为它的成熟度和我需要的独特插件 我唯一担心的是Sencha Touch的OO+声明式javascript编码是否很适合使用诸如Knockout之类的MVVM框架 我的意思是Knockout利用了视图(HTML页面)将通过数据绑定调用模型的概念。ExtJS(Sencha Touch)不会丰富视图。。。相反,它希望所有HTML

我目前正在KnockoutJS上构建一个web应用程序-真的,编程极乐

我已经到了需要添加移动开发框架的阶段,并且一直在考虑我的选择

我目前倾向于使用SenchaTouch,因为它的成熟度和我需要的独特插件

我唯一担心的是Sencha Touch的OO+声明式javascript编码是否很适合使用诸如Knockout之类的MVVM框架

我的意思是Knockout利用了视图(HTML页面)将通过数据绑定调用模型的概念。ExtJS(Sencha Touch)不会丰富视图。。。相反,它希望所有HTML内容都以声明方式编写

我在这里处理石油和水吗?你的想法是什么


注意:我很想知道这两种不同的架构是否能很好地结合在一起。不太想知道Sencha Touch与其他框架相比有什么不同。

这是石油和。。。另一种油。Sencha Touch拥有自己的MVC架构,包括数据绑定和模板,还有大量其他功能,如移动widgetry、事件处理、主题、图表和可视化库等。我预测,您在尝试将两者混合使用时会遇到严重困难。但如果你能做到这一点,我们很乐意听到(我是一个sencha人)


更新:正如Tony在下面提到的-自从我回答这个问题以来,Sencha的glu.js已经发布了-。如果你想要MVVM风格而不是MVC(我们喜欢他们的方法),这正是你想要的。

这绝对是可能的,我在上一个项目中使用了这两种方法。然而,您需要放弃最有趣的部分:dom元素绑定和大多数存储的功能。相反,您需要监听视图模型的更改并相应地更新ExtJS视图。并不是所有的ExtJS组件都是视图绑定的,以滑块为例。因为我是一个Flex人(你可以在Flex中绑定任何东西,老实说,其他的东西都很糟糕(是的,甚至是sencha),在习惯了只需键入{}就可以绑定)之后,我觉得有些不对劲,所以我的模型使用了knockout。我们在这里讨论的是VarA更新VarB更新VarC的变化,所以淘汰是完美的。很多事情都需要手工完成,比如模型视图绑定,最后我不能说我对结果感到自豪,因为它不是最有组织的代码(实际上看起来很难看),除非您的模型之间有很多依赖关系,否则我不会推荐它。

为ExtJS 3.x和4.x提供MVVM。Sencha Touch binding正在开发中。这些家伙还提供了一种简洁的规范(SVVM)方法。这些东西应该是Sencha核心代码库的一部分,ExtJS4.x类模型非常适合,因为4.x可以为GluJS使用的双向绑定提供挂钩

DeftJS:另一个得到很好支持的不错的选项是;一个开源库,它向Sencha ExtJS和Touch中添加了带有ViewController的MVC(因此不是完全完整的MVVM)。它还添加了控制反转(IoC)和承诺/延迟,以实现更干净的异步编码

更新…

Sencha ExtJS 5.x现在支持带有视图模型的完整MVVM,我们预计下一个主要版本。。。森查触摸3.x。。。很可能也会这样做。ExtJS 5.x也进行了更新,包括与Sencha Touch相同的核心类和类模型,因此Touch 3.x更可能与ExtJS 5.x相同的视图模型相匹配


KnockoutJS做的很好,但它只是你需要的一部分。不利的一面是,你最终不得不去寻找所有缺失的片段,然后交叉手指弹奏“如果可以的话,我的版本”,所有片段明年仍然由“某人”支持。相比之下,Sencha API提供了在一个版本周期内构建和维护整个应用程序所需的大部分内容。查看下面的标题“现代Web堆栈”。

我写了一篇博客文章,概述了使用Sencha Touch的内置MVC技术,而没有回复其他框架

本质上,这个想法是围绕着Sencha Touch非常“基于存储”的事实展开的:当记录发生更改时,事件会在记录的存储上触发,而不是在记录本身上。因此,如果我们将模型视图的X类型与存储相关联,我们可以简单地迭代这些视图,并在记录更改时根据需要更新它们


总的来说,这个解决方案只有几十行。如果你不想学习其他框架,比如GluJS,那么它是一个很好的轻量级替代方案。

如果我理解正确,那么你只使用了SechaTouch的视图。这些模型完全来自淘汰赛。另外,出于数据绑定目的,Sencha视图得到了淘汰视图的支持。你为什么要使用Sencha视图层?我想我要开始使用这个,有什么“入门”的建议吗?