2016-06-23 5 views
1

Ich bin derzeit mehrere Microservices ui in ein Webportal zu integrieren. Ich habe eine Navigation Sidebar mit Link zu Microservices, die in einen iFrame im zentralen Bereich geladen werden.Alternative zu iframe für Microservices ui Zusammensetzung

Ich habe viel Problem mit iframe (Sicherheit mit Rahmen Option Header, Fenstergröße, etc ...)

Haben Sie eine bessere Alternative zu einem Iframe wissen?

+0

http://particular.net/blog/secret-of-better-ui-composition –

+0

https://dejanglozic.com/2014/10/20/micro-services-and-page-composition-problem/ –

Antwort

1

Wenn für Ihre Micro-Services eine REST-API verfügbar ist, können Sie einen eingebetteten JavaScript-Code anstelle von iframe verwenden. Ihr Code einbetten würde in etwa so aussehen:

<div id="embed_id"></div> 
 
<script type="text/javascript"> 
 
    
 
(function(){ 
 
    var embededJavascriptElement = document.createElement("script"); 
 
    embededJavascriptElement.type = "text/javascript"; 
 
    embededJavascriptElement.charset= "utf-8"; 
 
    embededJavascriptElement.id = "embed_script"; 
 
    embededJavascriptElement.src = "<path to your script>"; 
 
    (document.getElementsByTagName("head")[0] || document.getElementsByTagName("body") [0]).appendChild(embededJavascriptElement); 
 
})(); 
 
</script>

Das Skript oben wird ein anderes Skript-Tag in Ihrem DOM einfügen. Dieses Skript wird interpretiert, sucht nach dem Element mit id = "embed_id" und rendert den eingebetteten Code in dieses div (Sie müssen dieses Verhalten implementieren).

1

Sie haben Ihre Frage entsprechend mit spring-cloud und Zuul markiert. Ich würde vorschlagen, dass dies genau der richtige Weg ist, denn auf diese Weise können Sie die Browser-Sandbox vermeiden und CORS-Header in Ihren Diensten verwalten. Verwenden Sie einfach start.spring.io und schließen Sie Zuul als Voraussetzung ein und definieren Sie Ihre Regeln. Ich schlage vor, dass Sie mit statischen Routen beginnen, und wenn Sie dann mit Zuul vertraut und vertraut sind, betten Sie eine Dienstleistungsregistrierung und Entdeckung wie Eureka, Konsul oder etcd ein.

+0

Du bist richtig @daniel für spring-cloud und zuul, sie lösen Sandbox- und CORS-Probleme. Was ist mit Alternative zu Iframe für UI-Komposition (mit Eader, Sidebar, Footer) für mehrere Microservices, wissen Sie über irgendwelche? – IKane

+0

Mir ist es jetzt nicht ganz klar, was Sie erreichen wollen. Verfügen Sie über eine Widgetbibliothek, die Sie flexibel anzeigen möchten? Etwas wie iGoogle hatte? Oder versuchen Sie nur, die Eingabe von verschiedenen kleineren Diensten auf einer Seite zu kombinieren? Ich meine, ist dein Wunsch, auf der Client-Seite oder Server-Seite zu kombinieren? Auf Kundenseite würde ich vorschlagen, dass Sie eckig aussehen. Und für Server-Seite erhalten Sie einfach einen Service mit z. Thymeleaf als Engine, um den gesamten Inhalt abzurufen und eine vollständig gerenderte HTML-Seite zurückzusenden. –

+0

kurz gesagt, ich will multiple ui microservices teilen einige gemeinsame teile: header, navigationsmenü, footer, etc ... – IKane