【发布时间】:2015-03-25 03:02:32
【问题描述】:
我有一个现有的 Durandal.js 应用程序,它利用了所有 ES5 功能,但我想将它升级到新的 Aurelia 平台。什么是正确的升级路径?最简单的升级方式是什么?是否有包含升级路径的文档?
【问题讨论】:
我有一个现有的 Durandal.js 应用程序,它利用了所有 ES5 功能,但我想将它升级到新的 Aurelia 平台。什么是正确的升级路径?最简单的升级方式是什么?是否有包含升级路径的文档?
【问题讨论】:
(请随时通过贡献将其作为社区答案)
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 数据绑定尝试利用可用的最新技术,但会优雅地回退到脏检查。这使开发人员能够为未来构建但支持现在。
【讨论】:
以下文章解释了一种可能的升级路径“从 Durandal.js 升级到 Aurelia”:
https://github.com/aurelia/framework/blob/master/doc/article/drafts/durandal-to-aurelia.md
durandal 扩展“Durelia”有助于迁移:
【讨论】: