9

我已经熟悉Knockout, Angular, Sammy, jQuery, 一点微风和一点余烬。所有人的教程和入门Durandal似乎都在说......首先添加jQuery,也许是淘汰赛。

它是否处理与所有这些完全不同的事情?它解决了哪些需求,使其可能与淘汰赛一起使用?

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

它在概念上自己做了什么?

4

4 回答 4

13

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 的功能作为其主要产品,以及其他旨在支持构建 Web 单页应用程序的好东西。

于 2013-08-24T01:42:20.883 回答
10

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

  1. 要求JS
  2. 昏死
  3. jQuery

这些不是“也许”。它们是硬依赖。没有他们,杜兰达尔就无法工作。

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

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

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

于 2013-08-24T01:55:04.950 回答
9

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

于 2013-08-24T01:45:08.603 回答
2

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

更好,因为:

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

  • 很棒的文档

  • 简单的api

  • 对 SEO 更友好!(你可以拥有所有的 html 并像组件一样使用它,混合情况)。Angular 2 主张将逻辑与表示相结合。

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

  • 仍然保持

  • Durandal 的创建者有一段时间是 Angular 开发人员(3 个月),因此在思考方面存在一些相似之处。

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

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

请分享更多关于杜兰达尔的观点:)

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

于 2017-05-18T20:32:39.553 回答