【问题标题】:What is the purpose of durandal?杜兰达尔的目的是什么?
【发布时间】:2013-08-24 01:19:08
【问题描述】:

我已经熟悉了KnockoutAngularSammyjQuery,一点微风,一点余烬。 Durandal 的教程和入门似乎都在说……首先添加 jQuery,也许还可以淘汰。

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

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

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

【问题讨论】:

    标签: durandal


    【解决方案1】:

    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 单页应用程序的好东西。

    【讨论】:

    • 我会说它比 Prism 更接近 Caliburn.Micro。
    【解决方案2】:

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

    1. RequireJS
    2. 淘汰赛
    3. jQuery

    这些不是“也许”。它们是硬依赖。 Durandal 没有它们就无法工作。

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 虽然简短,但我的回答是准确的,不值得投反对票。你如何添加一个更正的评论而不是downvoting? (假设你甚至有更好的答案..)
      • 我没有对这里的答案投反对票,不知道为什么有一个给你,一个给 tyrsius
      • 我知道老兄,是一些随机的反对者。不是针对你的。
      【解决方案4】:

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

      更好是因为:

      • 比其他框架更稳定、更专业,出错更少

      • 很棒的文档

      • 简单的api

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

      • html5 标准数据和绑定更好的代码可修改性(只需尝试在 react 中读取 html)

      • 仍在维护

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

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

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

      请分享更多关于 Durandal 的观点 :)

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

      【讨论】:

        猜你喜欢
        • 2013-10-19
        • 2013-08-31
        • 1970-01-01
        • 2013-04-22
        • 2013-10-21
        • 2014-01-31
        • 2014-03-19
        • 1970-01-01
        • 2015-05-25
        相关资源
        最近更新 更多