16

我有一个现有的 Durandal.js 应用程序,它利用了所有 ES5 功能,但我想将它升级到新的 Aurelia 平台。什么是正确的升级路径,最简单的升级方式是什么?是否有包含升级路径的文档?

4

2 回答 2

17

(请随时通过贡献将其作为社区答案)

模块加载

  1. Aurelia 支持使用 AMD 模块和 require.js 作为模块加载器。如果您将 require.js 与 Durandal 一起使用,并且想要将您的模块转换为 Aurelia,它们应该几乎相同,具体取决于将来对 require.js 的任何更改。

  2. 生命周期回调的含义相同,即activate, attached, detached, deactivate, canActivate,canDeactivate和任何其他回调都应保持不变。他们也仍然接受回报的承诺。

  3. 如果您选择不坚持使用 require.js,您可以将 AMD 模块从 AMD 格式转换为 ES6+ 格式。这需要删除 AMD 模块中的第一行或第二行和最后一行,并将其替换为类似于此的类导出 -

    define([], function (){
        // stuff
    ]);
    

    变成

    import {inject} from 'aurelia-framework';
    @inject()
    export class TheClassName{
        // stuff
    }
    

其中注入件是 aurelia 的 DI 系统。

数据绑定

  1. Aurelia 为开发人员提供了使用您希望使用的任何数据绑定库的能力,包括但不限于默认aurelia-binding的 、handlebarsknockout等...

  2. 当值发生变化时,其中一些库可能仍需要插件来正确更新,但这是一个正在进行的工作,以找出哪些做。如果您使用的是 Durandal 2.1,knockout建议将数据绑定保持原样,并采取逐步升级的方法,一次一个视图模型。 这是一项正在进行的工作,将在未来得到更好的解释

  3. Aurelia 数据绑定尝试利用可用的最新技术,但会优雅地回退到脏检查。这使开发人员能够构建未来但支持现在。

于 2015-01-26T16:47:22.460 回答
1

以下文章解释了一种可能的升级路径“从 Durandal.js 升级到 Aurelia”:

https://github.com/aurelia/framework/blob/master/doc/article/drafts/durandal-to-aurelia.md

Durandal 扩展“Durelia”有助于迁移:

https://github.com/josundt/Durelia

于 2017-03-15T21:23:57.750 回答