Aurelia: Isomorph?

8

Soweit ich weiß, unterstützt Aurelia das serverseitige Rendering nicht, wie bereits erwähnt hier .

Aber die Frage ist: Ist es möglich, dies mit einigen Hacks / Workarounds zu tun?

Die naheliegendste Idee wäre, Phantom, Nightmare.js oder was auch immer zu verwenden, um diese Seite einfach in Chrome auf dem Server zu rendern und dem Client zu liefern, aber dies wird sehr wahrscheinlich zu großen Produktivitätsproblemen führen.

Danke!

UPD

Laut Rob Eisenbergs Antwort auf die FDConf heute (16. April 2016) wird das serverseitige Rendering im Jahr 2016 implementiert, es arbeitet ein Kernteam daran und es gibt einen Termin für diese Funktion.

    
Alexander Mikhalchenko 08.12.2015, 10:36
quelle

4 Antworten

7

Es gibt ein offenes Problem für Universal / Isomorphic Aurelia , das Sie überwachen können. Insbesondere EisenbergEffect (wer ist Rob Eisenberg, der Schöpfer von Aurelia) besagt, dass sie schrittweise darauf hinarbeiten, Universal Aurelia zu unterstützen. Dieser Beitrag von ihm bietet die meisten Details:

  

EisenbergEffect am 25. August kommentiert

     

Wir versuchen, die Dinge im nächsten Monat zu sperren. Das tut es nicht   Das heißt, wir werden danach nichts hinzufügen, aber wir müssen darauf hinarbeiten   Stabilisierung, Leistung und solide Dokumentation ohne   Ablenkungen von vielen neuen Funktionen für ein wenig.

     

In erster Linie ist "Isomorphie" kein Anwendungsfall, den wir für die   Initiale Version 1. Auch das heißt nicht, dass wir es später nicht tun werden.   Aber wir wollen auch ein solides Framework für browserbasierte Apps haben   als Phone Gap und Electron / Nwjs Desktop-Apps zuerst. Das war unser   ursprüngliches Ziel und wir wollen sicherstellen, dass wir mit diesen Szenarien umgehen   besser als jeder andere Rahmen oder Bibliothek.

     

Danach haben wir einige andere Funktionen, die wir machen wollen   wertvoll für sich selbst, aber wird uns auch näher bringen   Isomorphismus.

     
  1. Aktivieren Sie, dass alle Aurelia-Bibliotheken auf dem Server ausgeführt werden. Dies ermöglicht einige   neue Testszenarien, so ist es wertvoll, wenn nur aus dieser Perspektive.
  2.   
  3. Sobald der Code auf dem Server ausgeführt werden kann, können wir die Serveransicht implementieren   Zusammenstellung. Dies ist kein isomorphes Rendering, sondern die Fähigkeit   um den View Compiler von Aurelia als Teil Ihres Builds und Bundles auszuführen   verarbeiten. Dies ermöglicht es, mehr Arbeit im Voraus zu leisten   Ihr Build, und dann muss es nicht im Browser ausgeführt werden   Laufzeit. Dies verbessert die Startzeit für alle Apps und   Reduzieren Sie die anfänglichen Renderzeiten für alle Komponenten. Es wird es auch schaffen   Es ist möglich, kompilierte Ansichten im lokalen Cache des Browsers zu speichern   Leistung von aufeinanderfolgenden Läufen der Anwendung.
  4.   
  5. Nach beiden   Die Dinge sind vorhanden, dann können wir uns einen kompletten Server Render machen   für jede Route. Das ist im wahrsten Sinne nicht ganz isomorph, aber   Es löst das SEO-Problem, ohne Bibliotheken von Drittanbietern zu benötigen. Damit,   Es ist schön, dort eine Lösung zu haben.
  6.   
  7. Zum Schluss können wir dann einen "synchronisieren"   Server vorgerenderte App mit einer Stateful Aurelia App läuft in   Browser, der uns zu 100% isomorph unterstützt. Also, das sind die Stufen.   Die ersten beiden wären für alle Entwickler von Vorteil, auch für diejenigen, die   sind nicht an isomorphen Apps interessiert. Die 3. Etappe kann heute absolviert werden   mit 3rd-Party-Bibliotheken, so ist dies ein schönes für uns, für diejenigen   die keine zusätzliche Abhängigkeit wollen. All das führt zu 4   fügt die letzten Teile hinzu.
  8.   

Wir haben bereits mit der Arbeit an 1. begonnen. Das könnte in unsere kommen   erste Veröffentlichung. Wir werden es nicht vorantreiben, aber es ist schon drin   Fortschritt und wir suchen nach den Problembereichen, damit wir es schaffen können   Arbeit. Die Schritte 2 bis 4 beinhalten signifikante Arbeit. Wirklich reden wir darüber   eine Sammlung von Merkmalen hier, von denen jeder ziemlich komplex ist. Damit,   diese werden wahrscheinlich in Stufen nach v1 kommen, als Punkt-Releases.

     

Wir wollen wirklich nicht tun, was Angular 2 getan hat. Sie haben   massiv ihre Architektur kompliziert ... bis zu dem Punkt, dass sehr wenige   Menschen werden es verstehen und Anwendungen entwickeln können   es ist viel komplizierter geworden, mit vielen Nuancen. Wir wirklich   das wollen wir nicht, also konzentrieren wir uns auf die Entwicklererfahrung, die wir wollen   zuerst, dann kommen wir zurück und sehen uns die isomorphe Unterstützung an (ja, wir   habe schon Ideen wie man das sauber macht, aber diese geben möchte   Ideen einige Zeit zu reifen). Unser Ziel ist dabei, modular zu sein.   Wenn Sie sich also nicht für Isomorphie interessieren, müssen Sie nicht denken oder   mach dir Sorgen darüber. Wenn Sie dies tun, würden Sie die notwendigen Pakete installieren,   stimme den "Beschränkungen" des Systems zu und sei auf deinem Weg.

     

Also, an alle, die sich für dieses Thema interessieren, würde ich Sie einfach fragen   Bitte haben Sie etwas Geduld. Für diejenigen, die nicht an Isomorphismus interessiert sind,   Mach dir keine Sorgen, wir werden die Entwicklererfahrung nicht auf dir bremsen.   Für diejenigen von euch, die es schlecht wollen, müssen Sie länger warten und   es wird in Phasen und in modularen Stücken kommen, um nicht zu stören   andere.

    
conradj 11.12.2015, 11:21
quelle
6

Nur für jetzt

Die einzige Möglichkeit, die ich vorschlagen kann: Rendern von Seiten mit phantomjs + Verwenden Sie redis, um diesen Prozess zu beschleunigen.

Aber Sie werden viele Probleme haben, den Zustand auf der Client-Seite wiederherzustellen.

.......

Schmutzige Lösung

Laden Sie die gerenderte Seite vom Server und auf der Client-Seite, um sie auf die übliche Weise zu rendern, anstatt die Benutzeroberfläche zu wechseln.

Es wird kein wirklich isomorphes sein, aber sowas wie Ссылка auf der ersten Seite laden.

.....

Ich hoffe, dass das Aurelia-Team bald einfachere Sachen für diesen Fall liefern wird.

    
Egor Malkevich 08.12.2015 10:48
quelle
2

In der aktuellen Aurelia gibt es die Möglichkeit, bestehendes HTML zu verbessern. Das Dokument sagt

  

Aurelia hat bisher einen Teil des DOM durch eine Root-Komponente ersetzt. Dies ist jedoch nicht die einzige Möglichkeit, mit Aurelia zu rendern. Aurelia kann auch das bestehende HTML progressiv verbessern.

Check out Erweiterung Abschnitt @ Ссылка

Ich freue mich auf eine bessere Dokumentation dieses Features. Es scheint mir, als würde man den HTML-Code auf dem Server rendern und injecten, aurelia wird damit arbeiten und google wird es auch mögen.

    
Thomas Schlage 26.01.2016 11:07
quelle
0

Ein Hack, den ich gerade erfunden habe, ist, eine statische Kopie des ursprünglichen Renderings in die Datei index.html zu schreiben:

%Vor%

Dies ist natürlich vollständig manuell und wenn das anfängliche Rendering irgendeinen Inhalt von einer Datenbank enthält, muss die statische Kopie möglicherweise aktualisiert werden jedes Mal, wenn sich der Inhalt der Datenbank ändert. (was natürlich isomorphes Rendering lösen soll)

aber für meine Bedürfnisse, die eine einfache Website mit einigen Informationen ist, die selten aktualisiert wird, ist diese Lösung gut genug. es wird zumindest ausreichen, bis ich in der Lage bin, richtiges isomorphes Rendering zu implementieren.

    
eMBee 26.11.2016 16:19
quelle