我有一个现有的 Durandal.js 应用程序,它利用了所有 ES5 功能,但我想将它升级到新的 Aurelia 平台。什么是正确的升级路径,最简单的升级方式是什么?是否有包含升级路径的文档?
2 回答
(请随时通过贡献将其作为社区答案)
模块加载
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”有助于迁移: