Durandal 和 Aurelia 有什么关系?

How are Durandal and Aurelia related?

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

这是我的看法。 Durandal 是一个轻量级 SPA 框架,可让您利用其他 JS 库和实用程序的优点来构建应用程序。所以它本身并不是一个完整的包(不像 Angular),但是可以使用不同的外部 JS 库——比如用于绑定的 Knockout,用于 DOM 的 jQuery,用于路由的 Sammy,等等。

另一方面,Aurelia 是混淆的来源。它也是一个 SPA 框架吗?还是仅限于作为客户端(前端)框架?更让我困惑的是 Durandal blog 只谈论 Aurelia。我从互联网上知道 Rob Eisenberg 在开始研究 Aurelia 之前就在研究 Durandal。那么 Aurelia 是 Durandal 的升级版,还是完全不相关的东西?

我还有一些问题,但我猜到目前为止我的问题结构将只要求自以为是的答案。因此,在这个问题结束之前,任何相关的描述、链接和参考都将是惊人的。我一定会在这里更新和添加有用的链接。

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

"Aurelia is just a vNext of Durandal. On occasion we've even called it Durandal Aurelia. Much like XBox 360 vs. XBox One. The web is significantly evolving, so we're evolving Durandal into Aurelia to match."

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。这意味着我们拥有原生模块、类、装饰器和更多可供我们使用的东西……你也有它们。

Aurelia 不仅以现代和未来的方式编写JavaScript,而且还采用了现代的架构方法。过去,框架是庞然大物。虽然不是 Aurelia。它是作为一系列协作库构建的。它们合在一起构成了一个强大而稳健的框架,用于构建单页应用程序 (SPA)。但是,Aurelia 的库通常可以在传统网站中单独使用,甚至可以通过 NodeJS 等技术在服务器端使用。"


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

强大的数据绑定。与 Angular 等其他框架不同,Aurelia 使用了 Javascript 的新功能。因此,在 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

希望对您有所帮助!