durandal - Durandal 和奥蕾莉亚有什么关系?

标签 durandal aurelia

每次我读到有关 Javascript 的新内容时,我都会阅读有关 Durandal 和 Aurelia 的内容。我在很多博客上听到开发人员要求从 Durandal 升级到 Aurelia 或类似的版本。虽然我确实有一个想法,但我对这两者到底是什么以及它们如何相关,或者它们是否有相关感到困惑。

这是我的看法。 Durandal 是一个轻量级 SPA 框架,允许您利用其他 JS 库和实用程序的最佳功能来构建应用程序。因此,它本身并不是一个完整的包(与 Angular 不同),但可以使用不同的外部 JS 库 - 例如用于绑定(bind)的 Knockout、用于 DOM 的 jQuery、用于路由的 Sammy 等。

另一方面,Aurelia 是令人困惑的地方。它也是一个 SPA 框架吗?或者它仅限于作为客户端(前端)框架?让我更加困惑的是 Durandal blog只谈论奥里莉亚。我从互联网上了解到,罗布·艾森伯格在开始制作《奥里莉亚》之前就已经开始制作《杜兰黛尔》了。那么 Aurelia 是 Durandal 的升级版,还是完全无关的东西?

我仍然有一些问题,但我猜到目前为止我的问题的结构只会要求固执己见的答案。因此,在这个问题结束之前,任何相关的描述、链接和引用文献都会令人惊叹。我也一定会在这里更新并添加有用的链接。

最佳答案

根据罗布·艾森伯格的说法:

“Aurelia 只是 Durandal 的下一代。有时我们甚至将其称为 Durandal Aurelia。就像 Xbox 360 与 Xbox One 的对比一样。网络正在显着发展,因此我们将 Durandal 演变为 Aurelia 以与之匹配。”

Aurelia, on the other hand, is where the confusion comes in. Is it also an SPA framework? Or is it limited to being a client-side (front end) framework only?

是的,它是一个SPA框架。实际上,它是一个用于构建 Javascript 客户端的框架,这意味着您可以为浏览器、桌面和移动设备开发应用程序。看看这个视频 https://channel9.msdn.com/Events/Seth-on-the-Road/DevIntersection-2015/Rob-Eisenberg-on-Aurelia

与 Durandal 不同,Aurelia 附带完整的软件包,您需要的一切都在那里。然而,它是完全可插拔和可扩展的,如果需要,您可以结合任何其他技术。


这里是官网提供的说明www.aurelia.io

Aurelia 是什么?

嗯,其实很简单。 Aurelia 只是 JavaScript。然而,它不是昨天的 JavaScript,而是明天的 JavaScript。通过使用现代工具,我们已经能够在 ECMAScript 2016 中从头开始编写 Aurelia。这意味着我们拥有 native 模块、类、装饰器等可供我们使用……您也拥有它们。

Aurelia 不仅是用现代和 future 的 JavaScript 编写的,而且还采用了现代的架构方法。过去,框架一直是庞然大物。但不是奥蕾莉亚。它是作为一系列协作库构建的。总而言之,它们形成了用于构建单页应用程序 (SPA) 的强大且稳健的框架。然而,Aurelia 的库通常可以单独使用,也可以在传统网站中使用,甚至可以通过 NodeJS 等技术在服务器端使用。”


Aurelia 的一些最大优势(在我看来)是:

强大的数据绑定(bind)。与 Angular 等其他框架不同,Aurelia 使用了 Javascript 的新功能。因此,所有数据绑定(bind)内容在 Aurelia 中通常都更快(来源 http://blog.durandal.io/2015/12/04/aurelia-repaint-performance-rules/ )

简单的约定和简单的语法。在 Aurelia 中开发确实很容易。有很多功能可供使用。如果你想覆盖一些约定,通常 1 行代码就足够了。 (参见http://aurelia.io/docs.html#/aurelia/framework/1.0.0-beta.1.0.3/doc/article/getting-started)

希望对你有帮助!

关于durandal - Durandal 和奥蕾莉亚有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34297291/

相关文章:

javascript - 获取html表格中按钮的数据绑定(bind)值

javascript - 找不到 Aurelia bundle

aurelia - 如何在没有模块加载器的情况下使用 aurelia?

javascript - 如何自动从 Breeze 查询返回的实体扩展 Knockout 可观察量?

javascript - Knockout.JS:将 select 的更改事件绑定(bind)到另一个 UI 属性

node.js - 配置 grunt watch 以使用 requirejs 对应用程序运行 Jasmine 测试

durandal - 延迟ajax和when() did()的Q解决方案

javascript - 对对象的引用以某种方式丢失

typescript - 在 Aurelia View 中访问导入类型的静态成员

aurelia - 如何在 Aurelia 中导入 ion-rangeslider