durandal的目的是什么?

时间:2013-08-24 01:19:09

标签: durandal

我已经熟悉KnockoutAngularSammyjQuery,微风和一点点烬。所有教程和Durandal的入门似乎都在说......首先添加jQuery并且可能是淘汰赛。

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

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

它在概念上有什么作用?

4 个答案:

答案 0 :(得分:11)

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

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

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

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

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

答案 1 :(得分:10)

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

  1. RequireJS
  2. 敲除
  3. 的jQuery
  4. 这些不是“maybes”。它们是硬依赖性的。如果没有他们,Durandal就无法工作。

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

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

    除此之外还有许多其他小功能,Durandal Homepage有一个很好的参考。

答案 2 :(得分:9)

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

答案 3 :(得分:1)

Magento 2站在Knockout和RequireJS上。 可以在其上添加Durandal,因此使用最新功能(组件,模板等)的可能性更大。

更好,因为:

  • 它比其他框架更稳定,更重要,发生的错误更少

  • 精彩文档

  • 简单的api

  • 更多SEO友好! (你可以把所有的html seved并像组件一样使用它,混合情况)。 Angular 2代表混合逻辑与演示。

  • html5标准数据和绑定具有更好的代码可重复性(只需尝试阅读html中的反应)

  • 仍然保持

  • Durandal的创造者有一段时间是Angular Developer(3个月)所以在思考方面有一些相似之处。

  • 在旧浏览器中工作! (IE6>)

还有一些缺点,但主要是因为它没有在一个包装中提供如此多的功能而不是新的,尖端技术被采用。

请求与Durandal分享更多观点:)

更多:https://johnpapa.net/compare-durandal-to-angular-not-knockout-to-angular/