durandal的目的是什么?

Mas*_*low 9 durandal

我已经熟悉了Knockout,Angular,Sammy,jQuery,有点微风,和少许灰烬.所有教程和入门Durandal似乎都在说......首先添加jQuery并且可能是淘汰赛.

它能处理与所有这些完全不同的东西吗?它有什么需要解决它可能与淘汰赛一起使用?

它只是客户端路由和ui组件的大杂烩吗?

它在概念上有什么作用?

Jos*_*iel 11

Durandal类似于Angular,因为它为客户端SPA Web应用程序提供了MV*框架.

Angular主要是(如果不是全部)自定义代码,而Durandal采用现有的库,主要是Knockout和RequireJS(Sammy依赖已经被2.0版本所取代),并提供管道以提供完整的SPA功能,包括视图/视图模型组合和hash-tag(spa)导航.

至于Knockout,Durandal在很大程度上依赖于Knockout来构建视图和查看模型.将视图注入DOM时,您的视图和视图模型将自动进行数据绑定.这样做的好处是我可以使用Knockout来提供V/VM数据绑定,让Durandal完成确定要使用哪个v/vm,从服务器检索它并将其组合到当前屏幕的工作.

重申,Durandal提供了一种将视图/视图模型映射到基于哈希标记的路线的方法,它为您提供SPA导航.通过将shell视图或布局视图指定为主视图,可以添加占位符,Durandal使用该占位符来实现基本上是"屏幕演示者"模式.Durandal监听URL更改,并可以自动激活,数据绑定(使用Knockout),并显示与当前URL路由匹配的视图.

如果您熟悉WPF,您可能会认为Durandal提供了类似Prism的功能,以及其他旨在支持为Web构建单页应用程序的好东西.


Kye*_*ica 10

Durandal有几个好处,但也建立在现有的库上.它依赖于

  1. RequireJS
  2. 昏死
  3. jQuery的

这些不是"maybes".它们是硬依赖性的.如果没有他们,杜兰达就无法工作.

在它的核心,Durandal添加了非常强大的组合绑定到淘汰赛.此绑定将在传递viewmodel时自动定位视图(HTML文件),从服务器检索它,将其绑定到viewmodel,然后将它们插入到DOM中.使用敲除template绑定可以实现类似的行为,但是管理模板会变得很麻烦.组合还会向流程添加生命周期事件,这有助于确保正确设置和拆除视图模型.它还提供可选的DOM缓存.

杜兰达尔还提供了一些框架结构.它提供了一个简单的插件API,其路由器使用它通过散列或推送状态进行SPA导航.它鼓励通过可覆盖的约定来组织视图模型和视图,以及使用Require AMD模块.它还提供了一个简单的事件模块,允许创建和使用应用程序范围的事件.

除此之外,它还有许多其他小功能,Durandal主页有一个很好的参考.


7za*_*rk7 9

Durandal是一个"全功能"SPA框架,而Knockout只是数据绑定.它的范围与Angular类似.