私は通常、PHPでWebアプリを作成します。RubyまたはPerl。Schemeの研究を始めています。この言語でWebプロジェクトを試してみたいと思います。この環境。
次の機能を探しています。
したがって、すべての返信に事前に感謝します。
ラケット には必要なものがすべて揃っています。ラケットWebサーバー tutorial を参照してから documentation を参照してください。 Webサーバーはしばらく前から存在しており、lotの機能があります。おそらく含まれていない唯一のものはmysqlインターフェイスですが、それは PLaneT (Racketパッケージ配布ツール)のパッケージとして存在します。
更新:RacketにDBサポートが追加され、mysqlを含むいくつかのDBで動作します。
Clojure をご覧ください。
Clojureは、Java仮想マシンをターゲットとする動的プログラミング言語です。[...] Clojureは、Javaフレームワーク、オプションのタイプヒント、型推論、Javaへの呼び出しがリフレクションを回避できるようにするため。
ClojureはLISPの方言であり、LISPとコードとしてのデータの哲学と強力なマクロシステムを共有しています。
Clojureでは、Javaとの相互運用が簡単なので、必要に応じて既存のJavaライブラリを再利用できます。 Web開発用。
clojure-contrib にはSQL APIがあり、 ClojureQL もあります。これはDBアクセスのニーズに対応する必要があります。
Compojure と呼ばれるClojureのWebフレームワークが開発中です。他にもあるかもしれません。
Clojureのソースは、 [〜#〜] epl [〜#〜] の下の githubで利用可能 です。 Linuxで実行するのは簡単です。 gitリポジトリのクローンを作成し、ant
を実行します。
guile scheme を使用してWeb開発を行うことができます。その標準ライブラリには、htmlの生成、操作、および解析に非常に役立つ(sxml simple)モジュールが含まれています。 guile-www ライブラリは、http、cgiなどのサポートを追加します。 guile-dbi ライブラリは、MySQLおよび他のデータベースへのアクセスを提供します。これらのビルディングブロックを使用すると、単純なcgiスクリプトから独自のHTTPサーバーを備えたWebアプリケーションまで、すべてを実装できます。
一般的なLISP WebフレームワークであるWeblocksを試してください。
このトピックに関する非常に広範なチュートリアル/電子ブックを作成しました。 http://lispwebtales.ppenev.com/
簡単な要約:
Common LISPに正確に興味があり、weblocksルートに行きたくない場合は、次のセットアップをお勧めします。
上記はすべてGPLまたは同様のライセンス(LISPプログラムでより機能するライセンス)の下にあることに注意してください。
Gambit Scheme には、Webアプリに対する独自のソリューションもあります。 Spork フレームワークを使用し、o ブラックホール モジュールシステム(両方ともPer Eckerdalによる)に基づいています。
Andrew Whaleyには、mod_proxyを使用してApacheでWebアプリを実行するGambit、Black Hole、Sporkの取得方法に関する最初の チュートリアル があります。あなたはそれを見てみたいかもしれません。
(場合によっては)関連するメモでは、Gambitは、あなたが物事をCにコンパイルし、それから実行可能ファイルにコンパイルします。
Paul Graham(およびその友人)は、特に基本的なWebアプリケーションを作成するためのLISP方言を作成しました。 Arcと呼ばれ、 arclanguage.org で取得できます。
多分本当に大きな複雑なウェブサイトには向いておらず、データベースサポートの状態はわかりませんが、Paul Grahamは LISPでのWebアプリケーションの作成方法 を知っているので、ArcはHTTP/HTML部分を作成します脳サイクルのほとんどをLISPの方法の学習に費やしている間、あなたにとって簡単です。
Weblocksは、Common LISPでWebアプリを構築するための素晴らしいツールですが、私にとっては少し重すぎます。
次のスタックを使用します。
OpenMCL(オープンソースLISP、非常に素晴らしい)
ポータブルAllegroserve(Webサーバー、HTMLジェネレーター)
Ajaxyを行うための独自のRailsライクなツール(更新:これは WuWei としてオープンソース化されました)
MzSchemeから派生したSchemeの独自のカスタマイズバージョンを使用します。新しいシンプルなWebアプリケーションフレームワーク、組み込みのWebサーバー(MzSchemeに付属するものではありません)、およびODBCライブラリ。( http:// spark -scheme.wikispot.org/Web_applications )。これは個人的なツールであるため、ドキュメントは網羅的ではないかもしれませんが、 コードリポジトリ には多くのサンプルコードがあります。
Common LISP で何ができるか見てみましょう。
Common LISPエコシステムの状態(2015) および Awesome Common LISP リストは、いくつかの最新のフレームワークを示しています( Caveman 、 Lucerne 、すべてが新しい Clack Webアプリケーションサーバー、Hunchentootおよびその他のサーバーのインターフェイス上に構築されています)。独自の調査結果で議論しましょう。
update:少し後で、SlyまたはEmacsのYasnippetの作成者によって Snooze が見つかりました。穴居人と言うよりも良い印象。エンドポイントの宣言は関数の宣言に似ているため、Cavemanで退屈だったいくつかのことは、URLパラメーターにアクセスするなど、Snoozeでは明らかです。私はあまり経験がありませんが、チェックすることをお勧めします。
2018年6月更新:Weblocksの進行中の書き換えもお見逃しなく、巨大になるでしょう! :D http://40ants.com/weblocks/quickstart.html Weblocksは、Javascriptを使用せずに、前後を分離することなく、動的なwebアプリを構築できます。 Reactがサーバー側です。執筆時点では非常にアルファ版ですが、2018年6月に進行中です。動作しています。いくつかのシンプルなWebアプリが動作しています。
ルツェルンの方法の方が簡単だとわかりました。with-params
マクロ( 実世界の例 ):
@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.")))
穴居人の道は 私にはあまり分かりません でした。
Cavemanはデータベース統合を宣伝しています(深町のDataflyとsxqlを使用)。
Clsqlまたは水戸ORMを使用できます: https://lispcookbook.github.io/cl-cookbook/databases.html
フォームジェネレーターがあるかどうかはわかりません。 edit: cl-forms および formlets 、または 1forms 、Caveman2での作業。
穴居人 持っていない (2011年に提起された問題)。
Ratify は入力検証ライブラリですが、フレームワークには統合されていません。
Webについて言えば、CLランドには その他のNiceライブラリ があります。
(Weblockでは、上記を参照してください。これらは必要ないかもしれません)
Clojureは、興味を引くLISPの方言です。この時点で、かなりまともなWeb開発スタックがあります。いくつかのことをお勧めできます。
leiningen
依存関係マネージャーは、使用しているライブラリのインストールと管理が非常に簡単です。かなり素敵なプラグインのセットも。 Clojurescriptのプラグインもあります。これは、JavascriptにコンパイルされるClojureに基づく言語です。ring
HTTPサーバーの抽象化。ほとんどの実際のWebフレームワークで使用されます。実際のフレームワークにジャンプする前に、まずそれを学ぶことは非常に良い考えです。hiccup
は、Clojureで書かれたHTML dsl/templating言語です。その非常に表現力豊か!ある意味、ジェイドを少し思い出させます。composure
は、Clojureで最も人気のあるWebフレームワークでなければなりません。 express.js
のようなルーティングライブラリです。Clojureはこれに最適です。非常に短く簡潔なコードを使用すると、ブログやフォーラムなどの非常に複雑なアプリケーションを実装できます。