Wie organisiert man gemischte HTTP Server + Web Client Dart Projektdateien?

Ich plane, eine reine Dart-Anwendung zu erstellen, bei der sowohl der HTTP-Server als auch der Web-Client in Dart geschrieben sind. Wenn ich von Java und Eclipse komme, kann ich die gesamte Projekthierarchie im Dart Editor öffnen und den Server ausführen, der die Client-Dateien bedient, und beide Seiten der App debuggen (Serverseite mit DartVM und Clientseite mit Dartium) ).

Ich habe Dart Editor gestartet und nachdem ich eine einfache Befehlszeilenanwendung als Grundlage für die Serverseite erstellt hatte, wurde ich mit dem Projektlayout verwechselt.

Die direkten serverseitigen Codedateien (Webserver-Boostrap-Klasse, Handler- und Filterklassen) werden definitiv in den Projektordner verschoben. Serverseitige Abhängigkeiten werden in die Datei pubspec.yaml des Projekts geschrieben.

Das Problem tritt auf, wenn der Server auf die Clientanwendungsdateien (DART-Dateien, statische Seitenquelle usw.) zugreifen muss, um sie für den Browser bereitzustellen. Die einfachste Lösung wäre, einen Webordner innerhalb des Serverprojekts zu erstellen und Client-Webdateien dort abzulegen. Auf diese Weise werden (soweit ich weiß) serverseitige Abhängigkeiten an den Client vererbt, da wir uns immer noch im selben Pubspec-Bereich befinden. Ich will das nicht.

Ich habe darüber nachgedacht, eine Client-Bibliothek im Projektverzeichnis lib / zu erstellen und dort Webdateien abzulegen, aber ich weiß nicht, wie gut es ist, eine vollständige Webanwendung dort abzulegen. Ich denke, ich muss HTML und andere Client-statische Dateien in den Asset- / Unterordner der Bibliothek stellen. Ich habe Angst, dass ich auf diese Weise die Webanwendungsunterstützung von der IDE verliere.

Ich könnte auch in der Lage sein, den Client in ein separates Projekt zu stellen, es wie ein Dart-Webapp-Projekt mit seiner eigenen pubspec.yaml zu organisieren und dies dann irgendwie zur Abhängigkeit der Serveranwendung zu machen. Ich weiß nicht, ob der Server auf diese Weise auf Webdateien im anderen Projekt zugreifen kann, um sie bereitzustellen. Dies ist wahrscheinlich die beste Methode, da hierdurch die Client- und Serverdateien sauber voneinander getrennt werden.

Kann mich jemand aufklären, wie das richtig gemacht wird?

Noch eine Erklärung. Angenommen, ich gehe mit dem separaten Projektansatz vor, wie andere bereits in den Antworten vorgeschlagen haben, aber ich betreibe immer noch gerne den Server, der in der Entwicklungsphase in der Lage ist, den Client ohne ausgefallenen Hack zu bedienen. Der Servermuss Greifen Sie auf die Client-Dateien im anderen Projekt zu. Es ist egal ob Javascript oder Dart, die statischen Dateien sind trotzdem da. Und während der Entwicklung möchte ich die Dart-Dateien bereitstellen, da Dartium die Entwicklung mit seiner direkten Dart-Lauffähigkeit erheblich beschleunigt.

Mit Java und Maven kann ich das Client-Paket zur Laufzeitabhängigkeit des Servers machen und die Client-Dateien einfach aus dem Klassenpfad bedienen. Unterstützt Dart den Zugriff auf die internen Dateien einer Pub-Abhängigkeit auf ähnliche Weise oder besteht der einzige Weg darin, alles in den Asset-Ordner des Clients zu legen oder den relativen Pfad-Hack auszuführen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage