Engineering Kiosk Episode #169 Deno, die Alternative zu Node.js mit der programmier.bar

#169 Deno, die Alternative zu Node.js mit der programmier.bar

Diese Episode in deiner Podcast-App hören...

Shownotes / Worum geht's?

Deno (JavaScript runtime) mit der programmier.bar.

Im Engineering Kiosk Adventskalender 2024 sprechen befreundete Podcaster⋅innen und wir selbst, Andy und Wolfi, jeden Tag kurz & knackig innerhalb von wenigen Minuten über ein interessantes Tech-Thema.

Unsere aktuellen Werbepartner findest du auf https://engineeringkiosk.dev/partners

Das schnelle Feedback zur Episode:

👍 (top) 👎 (geht so)

Sprungmarken

(00:00:00) Deno (JavaScript runtime)

Hosts

Feedback

 

Transkript

Das Transkript wurde automatisiert per Speech-to-Text erstellt und kann daher Fehler enthalten.

Wolfi Gassler (00:00:08 - 00:00:40) Teilen

Tag 18 im Dezember, Tag 18 im Engineering Kiosk Adventskalender. Und um schon einmal ins Thema einzuführen, richtig, es geht heute um JavaScript. Dass JavaScript einen regelrechten Boost in den letzten Jahren hingelegt hat, kann niemand bestreiten. Node JS hat JavaScript auch ins Backend gebracht. Doch ist Node JS die einzige serverseitige JS Runtime? Damit beschäftigen sich Fabi und Jan von der Programmierbar im heutigen Community Beitrag.

Wolfi Gassler (00:00:40 - 00:00:41) Teilen

Los geht's.

Jan Gregor Emge-Triebel (00:00:41 - 00:02:33) Teilen

Hi, hier sind Jan und Fabi von der Programmierbar und wir wollen heute mit euch über eine Alternative zu Node JS sprechen. Ich persönlich bin nämlich ein riesiger Typescript Fan, aber überhaupt gar kein Fan davon, wie es in Node JS zu benutzen ist, weil ich meinen eigenen TypeScript Compiler mitbringen muss, weil ich meinen Linter alles einstellen muss, weil ich meinen Test Runner zusammensuchen muss und weil ich überhaupt so viel Zeit investieren muss, bis überhaupt meine schöne geschriebene Zeile TypeScript einmal in Node JS ausgeführt wird. Deshalb bin ich vor einigen Monaten schon auf Dino gestoßen. Dino ist eine alternative JavaScript und TypeScript Runtime und die ist gemacht von Ryan Dahl, der vor vielen, vielen Jahren auch nojs [sos/eos], geschaffen hat. Und er sagt selbst davon, Dino ist das, was er gebaut hat, nachdem er aus seinen Fehlern von Node JS gelernt hat. Und da ist eben sehr viel mehr drin als in Node JS. Es ist eine sehr viel größere Nähe zu Web Standards drin, es ist nativer Typescript Support ohne irgendeine Cross Compilation drin, es ist ein Formatter eingebaut, ein Linter, ein Typechecker, ein testing Framework. Man kann Typescript direkt in Executables kompilieren, damit, wenn man sie portabler haben möchte und vieles, vieles mehr. Und das alles macht es für mich super viel leichter, mal eben was in TypeScript auszuprobieren, auszuführen, ohne eben vorher viel Tool aufsetzen zu müssen. Und dazu bringt Dino bzw. Dinoland, die Firma hinter Dino, eine eigene Hosting Plattform mit, sodass ich mit Dino Deploy auch kostenlos mein kleines Projekt, mein proof of Concept mal eben deployen kann, für andere nutzbar einsehbar machen kann, ohne dass ich mich eben viel mit irgendwelchen Docker Containern oder anderen Plattformen und Deployment Strategien beschäftigen muss. Und das alles sorgt dafür, dass ich wieder viel, viel mehr Spaß an Typescript habe.

Fabi Fink (00:02:33 - 00:02:59) Teilen

Ja, nice, Dino, hast jetzt auch gerade gesagt, so für deine proof of Concepts und dann lädst du es irgendwo hoch. So, ich meine, ist ja immer so eine Grundlage wie welche engine benutze ich und so, ist am Anfang immer schwer einfach zu entscheiden, wie sieht es denn aus, wenn ich jetzt hier gerade ein größeres Note Projekt habe. Ich habe gestern eins auf eine andere Engine umgezogen und zwar bann, da war es eigentlich relativ easy, fast ein Drop in Replacement. So ist das mit Deno auch so möglich, wenn ich jetzt gerade ein großes Noteprojekt habe, wie einfach komme ich zu Deno?

Jan Gregor Emge-Triebel (00:02:59 - 00:04:24) Teilen

Also wer Deno vielleicht vor einem Jahr oder zwei schon mal ausprobiert hatte, der wird da über die eine oder andere Stelle gestolpert sein, weil Dino halt doch einiges anders macht, was Dependency Management und Paketverwaltung und sowas alles angeht. Aber mit dem vor kurzem gedroppten Release von Dino versprechen sie da eben auch 100 % Kompatibilität, sodass Dino jetzt auch in der Lage ist, Package JSON Dateien auszulesen, deine Dependencies davon zu organisieren, API Kompatibilitäten mitzubringen und so weiter und so fort. Das heißt, sag niemals nie, aber in wahrscheinlich 99,9 % der Fälle da draußen sollte es mittlerweile möglich sein, Dino als Drop in Replacement für Node JS zu verwenden. Man muss sich allerdings den einen oder anderen Gedanken da vielleicht noch machen, weil Dino ja auch den Anspruch an sich hat, sicherer zu sein als Node JS. Also wer ein Dino Projekt quasi startet oder ausführt, der muss ein paar Sicherheitskonfigurationen vorher noch erledigen, z.B. soll meine Runtime Zugriff auf mein Filesystem haben, soll sie irgendwie Subprocesses spawnen können, hat sie Zugriff auf die Clock, auf das Network, auf was auch immer. Alles, was bei Node JS im Prinzip nicht bedacht werden muss, weil Node JS mit denselben Privilegien ausgeführt wird, wie man selber als Nutzer, in der Regel als Root User da eben schon hat. Und weil Dino da vorsichtiger sein will und konservativer ist, zweitausendein, muss man da einmal bewusster drüber nachdenken, was die Anwendung, die man da gerade startet, eigentlich alles so für Privilegien braucht. Aber ansonsten sollte es funktionieren.

Fabi Fink (00:04:25 - 00:04:40) Teilen

Okay, das heißt aber, weil du jetzt gerade als Security sowas wie Filesystem gesagt hast, wenn ich jetzt irgendwie fs nutze, um aufs Filesystem zuzugreifen in Node, das funktioniert auch weiter, das muss ich keine deno proprietäre API nutzen, um Files auszulesen oder sowas, oder gibt es da so ein paar Punkte, wo ich vielleicht was tun müsste, weißt du das?

Jan Gregor Emge-Triebel (00:04:40 - 00:05:00) Teilen

Das soll dann funktionieren, aber du kannst natürlich trotzdem auch die dino Variante davon benutzen. Dino stellt ja ein Standard Library bereit, wo all diese Zugriffe eben wegabstrahiert sind. Aber wie gesagt, soll auch funktionieren, aber du musst die Write bzw. Read Permission, je nachdem, was du in deinem Filesystem so vorhast, eben entsprechend vorher konfigurieren.

Fabi Fink (00:05:00 - 00:05:04) Teilen

Ja, nice. Und das heißt aber, Package JSON bleibt auch gleich?

Jan Gregor Emge-Triebel (00:05:04 - 00:05:43) Teilen

Package JSON kann ausgelesen werden. Dino bringt auch mittlerweile einen eigenen Package Manager mit. Oder die Macher hinter Dino haben ja auch JSR, die JavaScript Package Registry, geschaffen. Das ist jetzt allerdings nochmal ein anderes großes Thema. Wer da vielleicht mehr zu hören will, wir haben im Programmierbar Podcast in der Folge 156 über JSR gesprochen. Wir haben auch in der Folge 73 mal einführend länger über Dino selbst gesprochen. Und wir haben auch, wer sich für größere Dino Projekte interessiert, in der Folge 113 schon mal über Fresh gesprochen, was eines der ersten großen Webframeworks für Dino eben war. Und man sieht zweitausendein das Ökosystem darum wächst und wächst.

Fabi Fink (00:05:43 - 00:05:50) Teilen

Ja, nice. Dann würde ich sagen, ich war vorhin deswegen zum ersten Mal oder mal wieder auf der dino Seite, wo man seine eigenen Dino erstellen kann. Macht das doch.

Jan Gregor Emge-Triebel (00:05:50 - 00:05:52) Teilen

Das ist natürlich das allergrößte Feature von Dino.

Fabi Fink (00:05:52 - 00:06:01) Teilen

Also Dino ist natürlich auch, das Logo ist ein kleiner Dino und ihr könnt euch einen kleinen Dino auf der Homepage designen. Vielleicht gibt es ja zu Weihnachten auch noch schöne weihnachtliche Dinge da drauf. Schaut es euch mal an.

Jan Gregor Emge-Triebel (00:06:01 - 00:06:02) Teilen

Viel Spaß mit Dino.

Fabi Fink (00:06:02 - 00:06:03) Teilen

Ciao.

Wolfi Gassler (00:06:03 - 00:06:31) Teilen

Vielen Dank an Fabian und Jan von der Programmierbar für diese Episode. Wenn euch die Episode gefallen hat, hört doch mal in die Programmierbar rein. Neben Deep Dives und CTO Specials werden auch alle zwei Wochen verschiedene AI und Tech News behandelt. Den Link findet ihr wie immer in den Show Notes. Und was uns natürlich jetzt interessieren würde, ist, was eure Erfahrungen mit den alternativen JavaScript Runtimes sind. Besonders natürlich Dino. Kommt doch mal zu uns in die Discord Community und lasst uns das wissen. Wir freuen uns auf euch.

Wolfi Gassler (00:06:31 - 00:06:32) Teilen

Bis morgen.