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!
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.
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.
- 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.
- 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.
- 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.
- 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.
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.
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.
.......
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.
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.
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.
Tags und Links javascript aurelia isomorphic-javascript