Was ist Ihr Argument für ClojureScript (über Node.js) im Vergleich zu Clojure im Backend?

Fragen Sie nach Node vs Clojure für das Backend, wenn Sie Clojurescript für das Frontend verwenden? Oder ClojureScript als Backend verwenden und mit Nodejs interagieren?

Die zweite Interpretation kommt mir seltsam vor (ich weiß nicht, warum Sie das tun sollten, zumal Clojure ein fantastisches Backend bietet), daher beantworte ich die erste Interpretation.

Ich persönlich liebe Clojure für das Backend, aus den gleichen Gründen, aus denen ich ClojureScript benutze, und mehr (ich weiß, dass Node einige dieser Dinge hat, ich mag sie einfach besser in Clojure!)

  • Es ist funktional / unveränderlich / rein / erstaunlich
  • Ich kann Code zwischen dem Front- / Back-End wiederverwenden (insbesondere über CLJC-Dateien)
  • Clojure hat tolle Tools / Bibliotheken für Backends, zB: Compojure und Ring und mehr
  • Ich habe keine Kosten für Kontextwechsel, wenn ich vom Frontend zum Backend wechsle. Ich kann meine mentale Karte von Clojurey-Code hochfahren und an beiden Orten verwenden
  • Es ist ein Lisp. Ich liebe es ernsthaft, in Lisp zu programmieren. Emacs, Paredit, Rainbow Parentheses, alle Tastenbelegungen zum Navigieren / Verschieben logischer Codeblöcke. Es ist wunderbar.
  • APFELWEIN. Die Möglichkeit, Code an der Cursorposition in meinem Editor auszuführen, ist sooo nützlich.
  • Figwheel + Compojure’s Wrap-Reload. Dies bedeutet, dass jedes Mal, wenn meine Dateien gespeichert werden, sowohl das Backend als auch das Frontend aktualisiert werden, um meinen neuesten Code zu verwenden.
  • Leiningen. Ich habe noch nie ein Paketsystem verwendet, das mir besser gefällt.
  • Clojure bringt Ihnen bei, besser über das Programmieren nachzudenken (IMO). Zum Beispiel strukturieren Sie Ihre Gedanken in deklarative und logische “Knoten” anstatt in imperative Operationslinien. Ich fühle mich mit Clojure nur schlauer.
  • Und obwohl das Programmieren mit Clojure eine glücklichere Erfahrung ist, bin ich auch viel produktiver.
  • Makros sind super cool.
  • Clojure kann alle Vorteile von Java nutzen. Zugegebenermaßen ist Clojure immer unabhängiger von Java, da Code direkt in Clojure geschrieben wird, Sie jedoch weiterhin über Interop-Funktionen verfügen.
  • Ich habe nicht viel Erfahrung mit der Skalierung von Apps auf Tausende / Millionen von Benutzern, aber ich würde vermuten, dass Clojure in dieser Abteilung herausragende Leistungen erbringen würde, da es großartige Bibliotheken wie core.async und das Genie von Rich Hickey gibt, das er in diese Sprache gebracht hat.
  • Es ist nur ein angenehmes, fließendes, fröhlich-produktives Gefühl, wenn man CLJ / CLJS zusammen benutzt.

Keiner. Ehrlich gesagt, scheint mir das eine schreckliche Idee zu sein. Der Google Closure Compiler, mit dem ClojureScript JavaScript generiert, wird bereits in der JVM ausgeführt. Und jetzt haben wir cljc, damit Sie Code schreiben können, der sowohl Clojure als auch ClojureScript in einem Projekt zum Ziel hat. In Kombination mit der hübschen Client-Server-Architektur, die in Frameworks wie Om.Next integriert ist, haben Sie einen klaren Gewinn bei der Entwicklung von Full-Stack-Webanwendungen.

Am Ende kommt es darauf an, welches Ökosystem Sie bevorzugen. Java hat ein erfolgreiches Ökosystem auf dem Server, aber ich denke, es gibt viele Leute, die Node.js vorziehen würden. Gründe, Node.js imo vorzuziehen, sind:

  • Es hat viel mehr Bibliotheken
  • mit Jason zu arbeiten fühlt sich natürlich an
  • Die Plattform bewegt sich schneller

Siehe Tabelle 6. Eine umfassende Studie zu Programmiersprachen und Codequalität in GitHub.

Clojure scheint dabei zu helfen, Qualitätscode zu erhalten (ein Gesichtspunkt). Und ich habe Oldtimer dazu gebracht, von älteren Sprachen zu Lisp zu konvertieren, ohne viel Aufwand bei Anwendungen, die sich auf wissensbasiertes Engineering beziehen.

Scheint, dass es diejenigen gibt, die es sowohl für die Vorder- als auch für die Rückseite der Arbeit mögen.