何时使用Durandal的哪些功能?

时间:2013-06-07 00:36:34

标签: architecture knockout.js single-page-application durandal

到目前为止,我对Durandal并不喜欢它,但我对使用它的一些应用程序架构问题感到疑惑。例如,何时是使用ko: compose vs小部件vs子视图vs视图的好时机?

我目前的想法是:

使用整页视图

使用子视图或ko: compose可互换为子页面

将窗口小部件用于多个地方使用的子视图

这与预期的用例匹配吗?我知道Durandal是高度可定制的,但基于Starter Kit结构并使用默认实用程序(knockout.js,jquery,sammy等),使用上述每个元素的适当时间是什么?

1 个答案:

答案 0 :(得分:4)

欢迎加入,并确保浏览http://durandaljs.com/pages/docs/上的文档,该文档提供了一个很好的概述。

当查看允许组合DOM片段的Durandal特征时,我通常会区分单个视图模型(唯一的,只有一个)或构造函数(可能是一个或多个)。按照惯例,视图模型与同名的* .html文件配对。

例如,看看Durandal的sample shell.htmlJumpStarter's shell.html

中的shell.html

在两个示例中shell.js都返回一个单例,因为只有一个shell,但第二个示例将导航html提取到它自己的子视图中。当您看到子视图没有它自己的vm时,它会绑定父项(此处为shell.js)。通过这样做,您可以创建更小,更易于维护的片段,如果需要,可以在其他地方重复使用。

对于使用vm的构造函数的示例,请查看master detail sample

窗口小部件是vm / view的一种特殊形式((controller.js / view.html),如果需要根据它们运行的​​上下文配置稍微不同的元素,可以考虑它们。一个例子可能是表单元素作为模态形式的一部分而不是内联运行。

使用Durandal 1.2时,只有小部件可以在合成期间接收其他数据,但这将在即将到来的2.0中发生变化。