Tach!
- Ich arbeite ungerne mit HTML und CSS, kann ich das irgendwie umgehen?
Nicht, wenn du Webseiten erstellen möchtest. Es sei denn, du nimmst ein Framework, das komponentenbasiert arbeitet. ASP.NET hatte diesen Ansatz vor langer Zeit gewählt, um den Desktop-Programmierern den Einstieg in Web-Anwendungen zu erleichern. Das fühlte sich tatsächlich so ähnlich an, wie das Erstellen von Desktop-Programmen, bei denen man die Komponenten mit der Maus auswählt und anordnet. Vermutlich hat das Java-Ökosystem was ähnliches zu bieten. Aber auch damals schon kam man nicht sehr weit, ohne HTML anzufassen, und sei es nur für den Seitenrahmen. Man kann heute zwar immer noch solche Anwendungen erstellen, aber die meisten sind wohl von diesem Ansatz wieder weggekommen und haben sich ASP.NET MVC zugewendet, bei dem das HTML wieder mehr im Vordergrund steht, damit man die gestiegenen Ansprüche an modernes Web besser befriedigen kann.
Ich würde die Seiten viel lieber per Zusammenklicken oder java Code erstellen, aber ich glaube das geht nicht…
Es gibt auch heutzutage noch Hersteller von Komponenten (kommerziell und frei), die dir eine Menge Arbeit abnehmen, beispielsweise Datagrids mit eingebauten Bedienelementen und Funktionalität für Sortieren, Filtern und Gruppieren, oder Tree-Darstellungen oder Diagramme und anderes Zeug. Wenn es dir aber darum geht, HTML-Elemente mit (Java-)Code zu erzeugen, dann sparst du dir aber auch nicht das Wissen um HTML-Elemente und wie sie am besten verwendet werden, um dein Ziel zu erreichen. Das was du sonst als HTML ins Template schreibst, musst du nun in Form eines DOM in deinem Code erzeugen, damit der dann für dich daraus das HTML für den Browser generiert. Da gibt es bestimmt was in Java für diese Vorgehensweise. Das nimmt dir aber nicht die Arbeit ab, sondern gibt ihr nur eine andere Form. Andererseits gibt es quasi-typsichere Autovervollständigung auch im HTML-Editor von Eclipse.
Ich muss gucken wie ich die HTMl Dinger UnitTeste
Wenn mit "HTML-Dingern" Komponenten gemeint sind, die HTML erzeugen, dann unit-testest du das wie jede andere Funktion, die einen String erzeugt.
Wie Definiere ich welche Module sinnvoll wären? Und Kapsle ich den Code per Api-Server-Client Architektur oder macht das wenig Sinn, weil ich die ganze Anwendung besser als ein Module definieren sollte?
Du bist nicht der erste, der solche Projekte realisiert. Und je größer die werden, desto mehr Organisation braucht man, um sie übersichtlich zu halten. Sprich, die einzelnen Aufgaben sollten in überschaubare Einheiten heruntergebrochen werden. Jedenfalls haben schon viele vor dir diese Probleme gehabt und Lösungswege zu finden versucht, indem sie sich grundlegende Architektur überlegt haben. Beispielsweise eine NLayer Architecture.
Je mehr Module ich hab desto beschissener wird es den Code zu implementieren, weil ich dann Kreuz und Quer durch die Module klicken muss...
Ja, oftmals bleibt man nicht dabei, dass man lediglich an einem Modul schraubt, bis es fertig ist, sondern man möchte ja was sehen, also hat man trotz der Arbeitsteilung die Dateien von mehreren Ebenen gleichzeitig offen. Vielleicht kann man das umgehen, indem man erstmal sehr detailliert plant und dann nur noch runterprogrammiert. Ich weiß nicht, ob ich daran Gefallen finden würde.
andererseits wäre es besser die richtigen Module sofoert anzulegen als später per Refactoring zu modularisieren... könnt ihr mir hierzu ein paar Tipps geben?
Erfahrungen sammeln (inlusive negativer) und bei anderen schauen, wie die ihre Projekte organisieren.
dedlfix.