【问题标题】:How do I upgrade my Durandal.js app to Aurelia?如何将我的 Durandal.js 应用程序升级到 Aurelia?
【发布时间】:2015-03-25 03:02:32
【问题描述】:

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

【问题讨论】:

    标签: durandal aurelia


    【解决方案1】:

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

    模块加载

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

    2. 生命周期回调的含义与activateattacheddetacheddeactivatecanActivatecanDeactivate 和任何其他回调的含义相同。他们也仍然接受回报承诺。

    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-bindinghandlebarsknockout 等...

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

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

    【讨论】:

    • 您好,我看到您关于使用 durandal 模块的建议,假设您正在使用 AMD 加载,但我无法将其与 Aurelia 正确连接。
    • @R.DarioDuarte 有很多社区示例展示了如何使用 AMD 加载,简而言之,由开发人员决定如何加载,但支持 AMD。例如,如果您使用的是 require.js,那么如何使用 AMD 加载应该是相当简单的。
    • 可以在此处找到一些使用 Aurelia 的特定 AMD 示例:github.com/cmichaelgraham/aurelia-typescript
    • 生命周期回调实际上已更新为“激活、停用、canActivate、canDeactivate”,就像在 Aurelia 的文档中一样 :)
    • 附加和分离在所有元素上仍然可用。
    【解决方案2】:

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

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

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

    https://github.com/josundt/Durelia

    【讨论】:

      猜你喜欢
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-16
      相关资源
      最近更新 更多