我已经熟悉Knockout
, Angular
, Sammy
, jQuery
, 一点微风和一点余烬。所有人的教程和入门Durandal
似乎都在说......首先添加jQuery,也许是淘汰赛。
它是否处理与所有这些完全不同的事情?它解决了哪些需求,使其可能与淘汰赛一起使用?
它只是客户端路由和 ui 组件的大杂烩吗?
它在概念上自己做了什么?
我已经熟悉Knockout
, Angular
, Sammy
, jQuery
, 一点微风和一点余烬。所有人的教程和入门Durandal
似乎都在说......首先添加jQuery,也许是淘汰赛。
它是否处理与所有这些完全不同的事情?它解决了哪些需求,使其可能与淘汰赛一起使用?
它只是客户端路由和 ui 组件的大杂烩吗?
它在概念上自己做了什么?
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 单页应用程序的好东西。
Durandal 有几个好处,但也建立在现有库的基础上。它依赖于
这些不是“也许”。它们是硬依赖。没有他们,杜兰达尔就无法工作。
在它的核心,Durandal 添加了对淘汰赛的非常强大的组合绑定。此绑定将在传递视图模型时自动定位视图(HTML 文件),从服务器检索它,将其绑定到视图模型,并将它们插入到 DOM 中。使用敲除绑定可以实现类似的行为template
,但管理模板会变得很麻烦。组合还将生命周期事件添加到流程中,这有助于确保正确设置和拆除视图模型。它还提供可选的 DOM 缓存。
Durandal 还提供了一些框架结构。它提供了一个简单的插件 API,它的路由器使用它通过哈希或推送状态提供 SPA 导航。它鼓励通过可覆盖的约定来组织视图模型和视图,以及使用 Require AMD 模块。它还提供了一个简单的事件模块,以允许创建和使用应用程序范围的事件。
除此之外,它还有许多其他小功能,Durandal Homepage有一个很好的参考。
Durandal 是一个“功能齐全”的 SPA 框架,而 Knockout 只是数据绑定。它的范围类似于 Angular。
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/