2016-03-06 5 views
5

Laut Rob Eisenberg, dem Schöpfer von Aurelia, sollte es möglich sein, nested aurelia applications ineinander zu haben. Das Beispiel, das er in dem obigen Link erwähnt, ist nicht mehr öffentlich, es wäre sehr hilfreich, wenn jemand hier weiter ausführen könnte, oder sogar einen Link oder ein small example davon schreiben könnte, wie diese Art von Verschachtelung implementiert werden würde. Die Hauptanwendung und die Schnittstelle, die ich mit Aurelia erstellen möchte, würde aus einer Windows XP Desktop-Stil-Shell bestehen, in der man geschachtelte Aurelia-Anwendungen vom Startmenü öffnen und in einem eingebetteten Fenster öffnen könnte innerhalb der Hauptanwendungen "Windows Desktop-Bereich" - wie ein Windows oder Datei-Explorer würde in einem normalen Windows XP-Betriebssystem öffnen, aber innerhalb der SPA.Verschachtelte Aurelia-Anwendungen

Um dies wirklich erweiterbar zu machen, würde ich es vorziehen, die verschachtelten Aurelia-Anwendungen in Ordnern außerhalb des Stammordners der Hauptanwendungen zu platzieren und statt dessen über einen Datei-/Ordnerpfad von der Hauptanwendung aus zu verlinken.

Um es "einfach" zu halten, stellen Sie sich die this would be the main application (die Windows-Shell) vor - durch Klicken auf die Schaltfläche wird ein Fenster geöffnet, das minimiert, in der Größe verändert oder verschoben werden kann. In diesem Fenster würde sich eine weitere Aurelia-Anwendung öffnen. Und am Ende könntest du hoffentlich in der Lage sein, bestimmte Zustände von der Hauptanwendung auf verschachtelte Apps zu übertragen, wie zB. die Sprache oder Datenbank.

Und wenn es möglich ist, wäre es optimal, wenn die verschachtelte Anwendung von außerhalb des Stammordners der Hauptanwendungen gefunden und referenziert werden könnte.

Antwort

5

Hier ist ein Beispiel: 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> 

app.js

export class App { 
    main1 = './one/app'; 
    main2 = './two/app'; 
} 

Kind-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)); 
    } 
} 
+0

Danke Jeremy, ich habe nur ein letztes Problem jetzt. Da ich nicht in der Lage sein werde, die Ordner und Dateien meiner verschachtelten Anwendungen im selben Ordner wie die Hauptanwendung zu haben, so etwas wie diese main1 = '../sibling-folder-to-main-app-folder/src/app '; funktioniert nicht, da ich nur http: // localhost: 9000/Geschwister-Ordner-zu-Haupt-App-Ordner/src/app.js 404 (nicht gefunden). Ich kann verstehen, warum es das sagt, aber ich kann nicht herausfinden, wie ich dann die verschachtelten Anwendungen in einem Ordner außerhalb des Hauptstammordners der App haben könnte. Diese verschachtelten Apps müssen zur Erweiterung von main getrennt werden. – Dac0d3r

+0

Also meine letzte Frage ist, ob es möglich ist, zu referenzieren (zB: ) eine Datei aus einem Ordner außerhalb der Wurzel einer Aurelia-Anwendung? Der Grund dafür ist, dass die Aurelia-Hauptanwendung nur ein Teil eines größeren Core-Frameworks ist, das aus Modulen erweitert werden kann, die sich woanders befinden. :/ – Dac0d3r

+0

sollte möglich sein - es ist nicht wirklich eine Aurelia-Sache, die mehr mit Ihrer 'config.js' für den SystemJS-Modullader zu tun hat. –