Neue App auf Node Basis -> Fragen

[ChAoZ]

Rear Admiral
Registriert
Jan. 2010
Beiträge
5.320
Hallo Leute,

ich habe seit einigen Jahren beruflich Berührungen mit Node-Anwendungen aber so richtig fit bin ich darin nicht... und da ich aktuell eine eigene "Portfolio" App bauen will die mit die nötige Übersicht über all meine Invests usw. anzeigt, dachte ich mir, versuchst du es mal mit Node. So schlage ich 2 Fliegen mit einer Klappe.

  • DB Entwurf steht schon (Maria DB).
  • APIs für Cryptos und Aktien ermittelt.
  • CSS Lib rausgesucht.
  • Wireframes skizziert.

Nun kann es langsam aber sicher los gehen....
ABER... wie ich schon sagte, habe ich nicht DIE AHNUNG von Node, daher bin ich nun hier.

Welches Node Framework ist hierbei zu empfehlen?
Ich dachte da an Node Express, da ich Server und Client Seite brauchen werde.
Dazu würde ich das ganze gerne in TypeScript umsetzen.

Ist das alles miteinander kombinierbar?
Oder gibt es bessere Vorschläge?

Betrieben wird es vorerst im lokalen Netzwerk auf dem Raspberry Pi 4 (Unix) unter Docker.
Wenn die App mir gut nützt, wird sie eines Tages auf eine Cloud wandern.

Danke
 
Hast du erfahrengen mit irgendeinen Framework zur Webentwicklung in irgendeiner Sprache?
 
Wenn du nach einem komplettem Werkzeugkasten in Node mit Typescript fagst: Nestjs

Ist recht voreingenommen was das Design angeht, aber es zwingt einem zu einem recht sauberem Design. Express kann schnell in "PHP-Code" abrutschen wenn man nicht immer wieder mal aufräumt, je nachdem wie umfangreich das ganze wird.
OOTB bekommst du da per TypeORM alle gängigen Datenbanken incl automagischer Migrationen, Templates kann man mit Handlebars rendern und Queues/Tasks um externe APIs unabhängig von der UI periodisch zu fetchen.

Ist so ein bisschen das Laravel der Node-Welt (neben Adonisjs), ob man als PHP-Neuling mit Laravel anfangen soll ist dann eine andere Frage.
Aber gegen Express mit Typescript spricht grundsätzlich nichts.
 
  • Gefällt mir
Reaktionen: [ChAoZ]
Was ist dir wichtiger, das Projekt effizient voran bringen oder NodeJS zu lernen? Bist du sicher, dass es NodeJS ist, worüber du mehr lernen willst?
 
  • Gefällt mir
Reaktionen: RenoV und madmax2010
madmax2010 schrieb:
Hast du erfahrengen mit irgendeinen Framework zur Webentwicklung in irgendeiner Sprache?
Bin seit 15 Jahre "WebDev"...
Frontend grundsätzlich kein Problem... Nur Node Erfahrung fehlt halt deswegen wollte ich meine Fähigkeiten erweitern... In der neuen Firma wird kein Node verwendet, ergo meine einzige Chance hier was zu lernen.

BeBur schrieb:
Was ist dir wichtiger, das Projekt effizient voran bringen oder NodeJS zu lernen? Bist du sicher, dass es NodeJS ist, worüber du mehr lernen willst?
Ja und ja.. Effizienz hat hier keine Prio, das Projekt wird sicherlich 6 Monate oder länger WIP sein da ich nur paar Stunden pro Woche Zeit dafür habe.
Ergänzung ()

Joshinator schrieb:
Wenn du nach einem komplettem Werkzeugkasten in Node mit Typescript fagst: Nestjs
Danke schaue ich mir mal an.
 
[ChAoZ] schrieb:
Beides geht nicht, du kannst direkt und nur mit NodeJS arbeiten, ein Framework mit wenig Abstraktion oder mit viel Abstraktion wählen. Mehr Abstraktion = weniger Arbeit aber auch = weiter weg von den Grundlagen.

Wenn du Frontend-Dev bist, so verstehe ich deine Aussagen jdfs., dann würde ich dir raten ein Framework mit viel Abstraktion zu wählen, weil diese u.a. viele sinnvolle Vorgaben machen wie man Dinge umsetzt und es ist gut das zu lernen und zu kennen, wenn du das selber machst kommt am Ende Spaghetti raus und du hast nur gelernt, wie du Spaghetti-Code baust.
 
RenoV schrieb:
Dann spare dir das, ist eh keine gute Technik (sollte dir aber als "15 Jahre WebDev" bekannt sein.
Was ist den "gute" Technik in deinen Augen?

Wenn ich mir die Firmen und deren Stellenausschreibungen so anschaue, dann ist Node ist fast jeder dieser Ausschreibungen eine Voraussetzung. So kenne ich das auch von meiner alten Firma, Node hat mit der Zeit alle PHP Projekte ersetzt. Das ist nun mal das Werkzeug der Wahl wenn es heute um Web-Apps geht.

BeBur schrieb:
Beides geht nicht, du kannst direkt und nur mit NodeJS arbeiten, ein Framework mit wenig Abstraktion oder mit viel Abstraktion wählen. Mehr Abstraktion = weniger Arbeit aber auch = weiter weg von den Grundlagen.
Klar geht beides, wenn Zeit kein Faktor ist. Oder ich habe deine Frage missverstanden.

BeBur schrieb:
Wenn du Frontend-Dev bist, so verstehe ich deine Aussagen jdfs., dann würde ich dir raten ein Framework mit viel Abstraktion zu wählen, weil diese u.a. viele sinnvolle Vorgaben machen wie man Dinge umsetzt und es ist gut das zu lernen und zu kennen, wenn du das selber machst kommt am Ende Spaghetti raus und du hast nur gelernt, wie du Spaghetti-Code baust.
Ich will das Framework wählen, was gerade häufig produktiv verwendet wird und eine hohe Akzeptanz hat, und ich meine das war das Express Framework.
 
Alles außer Assembler ist schlechte Technik, alles andere hat zu viel Overhead.
Node macht durchs Design einige Dinge besser als andere Sprachen, und einige Dinge schlechter als andere Sprachen.
Der große Pluspunkt ist nunmal Javascript, Frontend-Menschen bekommt man so nunmal schneller in eine Fullstack Position wenn man nicht eine komplett neue Sprache lernen muss. Obendrauf kann man einiges an Code zwischen Frontend und Backend teilen.

"Node ist schlechte Technik" ist ein dummes Argument wenn jemand hier fragt "Hab ein Hobby-Projekt geplant und will was neues lernen".


[ChAoZ] schrieb:
Ich will das Framework wählen, was gerade häufig produktiv verwendet wird
Express wird oft verwendet, aber Express ist kein "volles Framework".
Express ist mehr ein Framework das HTTP-Logik abstrahiert und vereinfacht.
Routing, Middlewares und Cookies macht Express, alles andere ist weiterhin Handarbeit.

Das gibt einer Firma Flexibilität, die je nach Programmierer gut oder schlecht sein kann. Mit PHP-Code meinte ich Spagetticode wo Logik und Templates verwoben sind.

Zumindest das ist in Express schwerer, aber ähnlich wie Laravel zwingen "volle Frameworks" ein Design auf.
Nestjs fühlt sich sehr Angular an, ähnlich wie Angular werden Typescript-Decorators genutzt und Resourcen werden in Model View Controller (MVC) abgebildet.


Wenn es dir bei dem Projekt um "ich will was lernen was mir in Zukunft bei Jobs helfen könnte" geht, dann kannst du genauso gut raten wie wir.
Express hat relativ wenig Abstraktion, es wir einige Firmen geben die das gut finden und dann Features hinzufügen (ob externe Pakete oder selbstgebaut) und selbst aufpassen das der Code leserlich bleibt.
Andere Firmen nutzen lieber Frameworks wo von A-Z alles dabei ist und bestimmte Designs erzwingt.

BeBur schrieb:
Beides geht nicht, du kannst direkt und nur mit NodeJS arbeiten, ein Framework mit wenig Abstraktion oder mit viel Abstraktion wählen. Mehr Abstraktion = weniger Arbeit aber auch = weiter weg von den Grundlagen.

An der Stelle kommen wir auch auf den Punkt zurück, entweder lernst du "Node" (soll heißen Express für Routing, alles andere Handarbeit), oder du lernst ein vollwertiges Framework.
Bei Express wirst du erst noch deine Datenbank-Connection bauen müssen.
Dann merkst du nach einem Monat das ein ORM doch sinnvoll gewesen wäre.
Nach 2 Monaten fällt dir auf das der Code mutierst ist und eine andere Struktur auf lange Sicht übersichtlicher ist.
Nach 3 Monaten brauchst du eine Job-Queue, ziehst also erstmal los und muss eine passende Library austesten.
Nach 8 Monaten denkst du dir "hmm, GraphQL oder Websockets wären hilfreich für einen Live-Ticker statt polling"

Nestjs ist ähnlich wie Laravel voreingenommen.
Die geben dir die Tools, du programmierst relativ abstrakten Code wo das Framework automagisch viel erledigt.
Ohne Abstraktion solcher Frameworks musst du sowas manuell machen und verbringst weniger Zeit damit deine eigentliche Seite zu programmieren.
 
  • Gefällt mir
Reaktionen: [ChAoZ] und BeBur
Joshinator schrieb:
Alles außer Assembler ist schlechte Technik, alles andere hat zu viel Overhead.
:daumen:

Joshinator schrieb:
"Node ist schlechte Technik" ist ein dummes Argument wenn jemand hier fragt "Hab ein Hobby-Projekt geplant und will was neues lernen".
Es ist auch dummes Argument wenn es um produktivem Einsatz geht...

Joshinator schrieb:
Express wird oft verwendet, aber Express ist kein "volles Framework".
Express ist mehr ein Framework das HTTP-Logik abstrahiert und vereinfacht.
Routing, Middlewares und Cookies macht Express, alles andere ist weiterhin Handarbeit.
Danke, das habe ich mir schon gedacht und genau so wollte ich es auch.

Joshinator schrieb:
Mit PHP-Code meinte ich Spagetticode wo Logik und Templates verwoben sind.
Wird bei Node bzw. React unvermeidbar sein denke ich... jedenfalls im Frontend Teil aber das Backend, wo die ganzen Business Rules definiert sind, sollte natürlich nichts davon wissen.

Ich bin ein Freund von Clean Arch, das würde ich auch hier umsetzten wollen.

Joshinator schrieb:
Zumindest das ist in Express schwerer, aber ähnlich wie Laravel zwingen "volle Frameworks" ein Design auf.
Nestjs fühlt sich sehr Angular an, ähnlich wie Angular werden Typescript-Decorators genutzt und Resourcen werden in Model View Controller (MVC) abgebildet.
Und genau das mag ich nicht. Ich möchte mich nicht zu sehr an einen Framework binden.

Joshinator schrieb:
An der Stelle kommen wir auch auf den Punkt zurück, entweder lernst du "Node" (soll heißen Express für Routing, alles andere Handarbeit), oder du lernst ein vollwertiges Framework.
Danke, damit ist es entschieden :)
Ich meine, am Ende wird mein NPM Verzeichnis eh paar hundert Abhängigkeiten haben, das ist normal bei Node.

Joshinator schrieb:
Bei Express wirst du erst noch deine Datenbank-Connection bauen müssen.
Wozu das? Wozu braucht Express ne DB?

Joshinator schrieb:
Dann merkst du nach einem Monat das ein ORM doch sinnvoll gewesen wäre.
Nach 2 Monaten fällt dir auf das der Code mutierst ist und eine andere Struktur auf lange Sicht übersichtlicher ist.
Nach 3 Monaten brauchst du eine Job-Queue, ziehst also erstmal los und muss eine passende Library austesten.
Nach 8 Monaten denkst du dir "hmm, GraphQL oder Websockets wären hilfreich für einen Live-Ticker statt polling"
Dann wird es eben nachgereicht bzw. sobald ich mich mit Login beschäftige, werde ich mir die ersten Gedanken über ORM machen, bis dahin ist es keine hohe Prio.

Danke euch allen.
 
[ChAoZ] schrieb:
Wozu das? Wozu braucht Express ne DB?
Express selbst braucht keine DB, aber deine App wird eine brauchen. In Express musst du das ganze dann händisch verkabeln, Schema (in SQL und Typescript) pflegen und Co.
Vollwertige Frameworks nehmen dich mehr an die Hand bzw. schreiben dir vor was du wie benutzt. Aber das ist ja nichts Node-spezifisches.

Nestjs benutzt intern übrigens auch Express, innerhalb von Nest hat man damit nicht viel Kontakt solange man nicht explizit danach sucht.
Aber das sollte nochmal klar machen das Express nicht wirklich ein volles Framework ist sondern eher nur HTTP in Node abstrahiert.
 
  • Gefällt mir
Reaktionen: [ChAoZ]
Um die DB mache ich mir keine Sorgen. Schaue mit dein Framework am Wochenende genauer an... Will langsam loslegen auch wenn dabei erstmal nur eine ungestylte Login Seite rauskommt...
 
Zurück
Oben