我有一个现有的Durandal.js应用程序,它充分利用了所有ES5功能,但我希望将其升级到新的Aurelia平台。什么是正确的升级路径?最简单的方法是尽可能地减少前面的最简单方法?是否有升级路径的文档?
答案 0 :(得分:16)
(请随意通过捐款将其作为社区答案)
Aurelia支持使用AMD模块和require.js作为模块加载器。如果您将require.js与Durandal一起使用并希望将模块转换为Aurelia,则它们应该几乎完全相同,具体取决于将来对require.js的任何更改。
生命周期回调与activate
,attached
,detached
,deactivate
,canActivate
,canDeactivate
保持一致,而任何其他人应该保持不变。他们还接受回复承诺。
如果您选择不坚持使用require.js,您可以将AMD模块从AMD格式转换为ES6 +格式。这需要删除AMD模块中的第一行或两行和最后一行,并将其替换为类似于此的类导出 -
define([], function (){
// stuff
]);
变为
import {inject} from 'aurelia-framework';
@inject()
export class TheClassName{
// stuff
}
注射片是aurelia的DI系统。
Aurelia为开发人员提供了使用您希望的任何数据绑定库的能力,包括但不限于默认的aurelia-binding
,handlebars
,knockout
等。
这些库中的一些可能仍然需要插件才能在发生值更改时正确更新,但这是一项正在进行的工作,以查找哪些内容。如果您使用的是Durandal 2.1和knockout
,建议按原样保留数据绑定,并逐步采用一种视图模型进行升级。 这是一项正在进行中的工作,将会更好地解释
Aurelia数据绑定试图利用可用的最新技术,但会优雅地回退到脏检查。这使开发人员能够为未来而建立,但支持现在。
答案 1 :(得分:1)
以下文章介绍了可能的升级路径"从Durandal.js升级到Aurelia":
https://github.com/aurelia/framework/blob/master/doc/article/drafts/durandal-to-aurelia.md
和durandal扩展" Durelia"有助于迁移: