Normalerweise schreibe ich Web-Apps in PHP, Ruby oder Perl. Ich beginne mit dem Studium des Schemas und möchte ein Webprojekt mit dieser Sprache ausprobieren. Aber ich kann nicht finden, was die beste Umgebung dafür ist.
Ich suche folgende Funktionen:
- Eine einfache Möglichkeit, die Anforderungsparameter abzurufen (z. B. get-get #key, get-post #key, get-cookie #key).
- MySQL-Zugang.
- HTML-Formulargeneratoren, -verarbeitung, -validatoren usw.
- Helfer zum Filtern von Benutzereingabedaten (z. B. HTML-Entitäten, Escape-Variablen zum Einfügen von Abfragen usw.).
- ZAHNSEIDE.
- Und GNU / Linux freundlich.
Also, danke im Voraus an alle Antworten.
Antworten:
Schläger hat alles was Sie brauchen. Weitere Informationen finden Sie im Tutorial zum Racket-Webserver und anschließend in der Dokumentation . Der Webserver gibt es schon eine Weile und er hat viele Funktionen. Wahrscheinlich ist das einzige, was nicht enthalten ist, eine MySQL-Schnittstelle, die jedoch als Paket auf PLaneT (Racket Package Distribution Tool) vorhanden ist.
UPDATE: Racket bietet jetzt DB-Unterstützung und funktioniert mit mehreren DBs, einschließlich MySQL.
quelle
Vielleicht möchten Sie einen Blick auf Clojure werfen :
Die Interaktion mit Java ist in Clojure unkompliziert, sodass Sie alle vorhandenen Java-Bibliotheken nach Bedarf wiederverwenden können. Ich bin sicher, es gibt viele, die für die Webentwicklung nützlich sind.
clojure-contrib verfügt über eine SQL-API, und es gibt auch ClojureQL , das Ihre DB-Zugriffsanforderungen abdecken sollte.
Für Clojure befindet sich ein Webframework namens Compojure in der Entwicklung. Es kann auch andere geben.
Clojures Quelle ist auf Github unter der EPL verfügbar . Es ist einfach, es unter Linux zum Laufen zu bringen. Ich klone einfach die Git-Repos und renne los
ant
.quelle
Sie können Webentwicklung mit Guile-Schema durchführen . Die Standardbibliothek enthält das (sxml simple) Modul, das für die HTML-Generierung, Manipulation und Analyse sehr nützlich ist. Die guile-www - Bibliothek bietet Unterstützung für http, cgi usw. Die guile-dbi- Bibliothek bietet Zugriff auf MySQL und andere Datenbanken. Mit diesen Bausteinen können Sie alles implementieren, von einfachen CGI-Skripten bis hin zu Webanwendungen mit einem eigenen HTTP-Server.
quelle
Probieren Sie Weblocks, ein Common Lisp-Webframework, aus:
http://weblocks.viridian-project.de/
quelle
Ich habe ein ziemlich umfangreiches Tutorial / E-Book zum Thema geschrieben: http://lispwebtales.ppenev.com/
Kurze Zusammenfassung:
quelle
Dies könnte das sein, wonach Sie suchen.
http://www.plt-scheme.org/
http://docs.plt-scheme.org/web-server/index.html
http://common-lisp.net/project/cl-weblocks/
quelle
Wenn Sie genau an Common Lisp interessiert sind und nicht die Weblock-Route einschlagen möchten, würde ich das folgende Setup empfehlen:
Beachten Sie, dass alle oben genannten Lizenzen unter GPL oder einer ähnlichen Lizenz stehen (eine, die eher für Lisp-Programme geeignet ist).
quelle
Gambit Scheme hat auch eine eigene Lösung für Web-Apps. Es verwendet das Spork- Framework, das auf dem Black Hole- Modulsystem basiert (beide von Per Eckerdal).
Andrew Whaley hat ein erstes Tutorial, wie man Gambit, Black Hole und Spork dazu bringt, eine Web-App unter Apache mit mod_proxy auszuführen. Vielleicht möchten Sie sich das ansehen.
In einem (möglicherweise) verwandten Zusammenhang kompiliert Gambit Ihre Inhalte auch zu C und dann zu einer ausführbaren Datei, wenn Sie dies wünschen.
quelle
Paul Graham (und seine Freunde) haben einen Lisp-Dialekt speziell für das Schreiben grundlegender Webanwendungen erstellt. Es heißt Arc und ist unter arclanguage.org erhältlich .
Es ist wahrscheinlich nicht für wirklich große, komplexe Websites geeignet und ich bin mir nicht sicher, in welchem Zustand sich die Datenbankunterstützung befindet, aber Paul Graham weiß, wie man Webanwendungen in Lisp schreibt , sodass Arc Ihnen den HTTP / HTML-Teil einfach macht, während Sie am meisten Geld ausgeben von Ihren Gehirnzyklen lernen den lisp Weg.
quelle
Weblocks ist ein schönes Tool zum Erstellen von Web-Apps in Common Lisp, aber etwas zu schwer für mich.
Wir verwenden den folgenden Stapel:
OpenMCL (Open Source Lisp, sehr schön)
Portable Allegroserve (Webserver, HTML-Generator)
Unsere eigenen Rails-ähnlichen Tools für Ajaxy-Inhalte (Update: Dies wurde jetzt als WuWei als Open-Source-Version bereitgestellt )
quelle
Ich verwende meine eigene, angepasste Version von Scheme, die von MzScheme abgeleitet ist. Es verfügt über ein neues, einfaches Webanwendungsframework, einen integrierten Webserver (nicht den mit MzScheme gelieferten) und ODBC-Bibliotheken. ( http://spark-scheme.wikispot.org/Web_applications ). Die Dokumentation ist möglicherweise nicht vollständig, da dies eher ein persönliches Werkzeug ist. Es gibt jedoch viele Beispielcodes im Code-Repository .
quelle
Clojure ist ein Lisp-Dialekt, der Sie interessieren könnte. Zu diesem Zeitpunkt gibt es einen ziemlich anständigen Webentwicklungsstapel. Ich kann ein paar Dinge empfehlen:
leiningen
Abhängigkeitsmanager, mit dem Sie arbeiten, ist wirklich einfach zu installieren und zu verwalten. Ziemlich schöne Plugins auch dafür. Es gibt sogar ein Plugin für Clojurescript, eine auf Clojure basierende Sprache, die in Javascript kompiliert wird.ring
HTTP-Server-Abstraktion. Es wird in den meisten aktuellen Web-Frameworks verwendet. Es ist eine ziemlich gute Idee, dies zuerst zu lernen, bevor Sie in ein tatsächliches Framework springen.hiccup
ist eine in Clojure geschriebene HTML-DSL- / Template-Sprache. Es ist sehr ausdrucksstark! Erinnert mich in gewissem Sinne ein bisschen an Jade.composure
müsste das beliebteste Webframework für Clojure sein. Es ist im Wesentlichen eine Routing-Bibliothek wieexpress.js
.quelle
Mal sehen, was mit Common Lisp gemacht werden kann .
Der Zustand des Common Lisp-Ökosystems (2015) und die Awesome Common Lisp- Liste zeigen uns einige moderne Frameworks ( Caveman , Luzern , alle auf dem neuen Clack- Webanwendungsserver, einer Schnittstelle für Hunchentoot und andere Server). Lassen Sie uns mit unseren eigenen Erkenntnissen diskutieren.
Update 2019 : Es gibt ein neues Tutorial zum Common Lisp Cookbook: https://lispcookbook.github.io/cl-cookbook/web.html Es behandelt Routing, Template-Engines, das Erstellen eigenständiger Binärdateien, die Bereitstellung usw.
Update : Etwas später fand ich Snooze vom Schöpfer von Sly oder Emacs 'Yasnippet heraus und hatte einen viel besseren Eindruck als Caveman. Das Deklarieren von Endpunkten ähnelt dem Deklarieren von Funktionen. Einige Dinge, die in Caveman mühsam waren, sind in Snooze offensichtlich, z. B. der Zugriff auf die URL-Parameter. Ich habe nicht viel Erfahrung damit, aber ich empfehle es auszuprobieren.
Update Juni 2018 : Verpassen Sie auch nicht das laufende Umschreiben von Weblocks, es wird riesig! : D http://40ants.com/weblocks/quickstart.html Mit Weblocks können dynamische Webanwendungen ohne Javascript-Zeile erstellt werden, ohne dass die Vorder- und Rückseite getrennt werden müssen. Es ist komponentenbasiert, wie React, aber serverseitig. Zum Zeitpunkt des Schreibens (Juni 2018) ist es sehr Alpha, aber im Gange und es funktioniert, ich habe ein paar einfache Web-Apps.
Eine einfache Möglichkeit, die Anforderungsparameter abzurufen (z. B. get-get #key, get-post #key, get-cookie #key).
Ich fand den Luzerner Weg einfacher, er ist so einfach wie ein
with-params
Makro ( Beispiel aus der Praxis ):@route app (:post "/tweet") (defview tweet () (if (lucerne-auth:logged-in-p) (let ((user (current-user))) (with-params (tweet) (utweet.models:tweet user tweet)) (redirect "/")) (render-template (+index+) :error "You are not logged in.")))
Cavemans Weg war mir weniger klar .
MySQL-Zugang
Caveman wirbt für die Datenbankintegration (mit Datafly und sxql von Fukamachi).
Sie können einfach clsql oder das Mito ORM verwenden: https://lispcookbook.github.io/cl-cookbook/databases.html
HTML-Formulargeneratoren, -verarbeitung, -validatoren usw.
Ich weiß nicht, ob es da draußen Formulargeneratoren gibt. edit : es gibt: cl-Formulare und Formlets oder wieder 1forms , die mit Caveman2 arbeiten.
Caveman hat keine (Problem im Jahr 2011).
Helfer zum Filtern von Benutzereingabedaten (z. B. HTML-Entitäten, Escape-Variablen zum Einfügen von Abfragen usw.).
Ratify ist eine Eingabevalidierungsbibliothek, die jedoch nicht in ein Framework integriert ist.
FLOSS und GNU / Linux freundlich: ✓
Andere Web-Sachen
Apropos Web, es gibt andere nette Bibliotheken in CL Land:
Ajax in Lisp
(Denken Sie daran, mit Weblocks, siehe oben, brauchen wir diese möglicherweise nicht.)
Mit ParenScript können wir JavaScript in Common Lisp schreiben, ohne unseren üblichen Workflow zu leben, und somit die
fetch
Web-API zum Schreiben von Ajax-Aufrufen verwenden.quelle
Clojure wäre dafür perfekt. Mit sehr kurzem, sauberem Code können Sie einige sehr komplexe Anwendungen wie Blogs oder Foren implementieren.
quelle