嵌套Aurelia应用程序

Dac*_*d3r 5 javascript aurelia

根据Aurelia的创建者Rob Eisenberg的说法,应该可以在彼此内部嵌套aurelia应用程序.

由于他在上述链接中提到的例子不再公开,如果这里的任何人可以进一步详细说明,甚至链接或写一个关于如何实现这种嵌套的小例子,这将是非常有用的.

我希望用Aurelia创建的主要应用程序和界面将包含一个Windows XP桌面样式shell,其中一个可以从开始菜单打开嵌套的Aurelia应用程序,在主应用程序内的嵌入式窗口中打开"Windows桌面区域" - 就像Windows或文件浏览器将在正常的Windows XP操作系统中打开,但在SPA内部.

为了使这个真正可扩展,我宁愿保留将嵌套aurelia应用程序放在主应用程序根文件夹之外的文件夹中的可能性,而是使用磁盘上的文件/文件夹路径从主应用程序链接到它们.

因此,为了保持"简单",想象这将是主要应用程序(Windows shell) - 单击按钮打开一个窗口,可以最小化,调整大小或移动.在那个窗口中,另一个aurelia应用程序将打开.最后,您希望能够将某些状态从主应用程序转移到嵌套应用程序,例如.语言或数据库.

如果可能,最好是嵌套应用程序可以从主应用程序根文件夹外部定位和引用.

Jer*_*yow 5

这是一个例子:https://gist.run?id = 7cda93aa0a225805ddf6

app.html

<template>
  <require from="./child-app"></require>

  <child-app main.bind="main1"></child-app>
  <child-app main.bind="main2"></child-app>
</template>
Run Code Online (Sandbox Code Playgroud)

app.js

export class App {
  main1 = './one/app';
  main2 = './two/app';
}
Run Code Online (Sandbox Code Playgroud)

儿童app.js

import {
  Aurelia,
  noView,
  bindable,
  inject,
  Container
} from 'aurelia-framework';
import {Loader} from 'aurelia-loader';

@noView()
@inject(Loader, Element)
export class ChildApp {
  @bindable main;

  constructor(loader, element) {
    this.host = element;
    this.app = new Aurelia(this.loader, new Container());
    this.app.use.standardConfiguration();
  }

  mainChanged() {
    this.app.start().then(a => a.setRoot(this.main, this.host));
  }
}
Run Code Online (Sandbox Code Playgroud)