フレームワークの観点から考えるのはおそらく間違いです。より良いアプローチは、要件に最適な「フレームワーク」を得るためにまとめたライブラリ コンポーネントの観点から考えることです。
私は過去にいくつかのフレームワークを使用してきました。それらのほとんどは、基本的なアプリケーションを非常に迅速に起動して実行するのにかなり良い仕事をします. ただし、例外なく、それらすべてがイライラすることが多いことがわかりました. 多くの場合、ボイラープレートが多すぎるか、開発中のアプリケーションに関係のないフープを飛び越えなければならないことが原因です。
Clojure に初めて来たとき、私はフレームワークを探し始めましたが、これが間違ったアプローチであることに気付きました。代わりに、基本的なリング アプリケーションから始めて、必要に応じてライブラリを追加する方がはるかに優れていることがわかりました。これは最初は大きな学習曲線のように思えるかもしれませんが、実際には必要のないフレームワークの足場の山全体を学習する必要がないため、同じくらい効率的であることがわかります。
ただし、さまざまなフレームワークを見ると、ライブラリを最適に統合する方法、さらに重要なことに IMO を統合する方法、必要なワークフローに最適なように lein project.clj ファイルを最適に構成する方法についてのアイデアが得られるため、非常に役立つことがわかりました。
次のテンプレートが非常に便利であることがわかりました。私はそれらを「そのまま」使用しませんが、私が取り組んでいるアプリに最適なフレームワークを開発するために、それらの多くからアイデアを採用/盗用しました.
LuminusおよびLuminus テンプレートは、非常に広範なフレームワークを提供します。それらは多くのアプリケーションにとって少し「重い」と思いますが、さまざまな Clojure ライブラリをアプリに統合する方法の素晴らしい例がいくつかあります。メイン Web サイトには、役立つドキュメントもいくつかあります。
Reagent テンプレートを含む Reagent Projectは、Reagent (react.js) ClojureScript サポートを使用するアプリの出発点として適しています。これは、Javascript と適切に統合されたアプリを作成する最も簡単な ClojureScript ライブラリの 1 つです。
lein-figwheelは、figwheel を使用して clojurescript の動的読み込みを提供する非常に興味深いテンプレートです。これにより、コードを変更するときにブラウザーで ClojureScript の変更を確認できます。他の多くのテンプレートでは、この機能が独自のテンプレートに追加されています。もともと Om を念頭に置いて開発された Luminus および Reagent テンプレートは、テンプレートに Figwheel 機能も統合するようになりました。インタラクティブな開発における Clojure と ClojureScript の利点のいくつかを実際に示しています。
Compojure Templateは素晴らしい出発点です。それはすべての基本的なリングと compojure のもので非常に基本的な compojure ベースのプロジェクトを設定します。Clojure Web 開発を始めるのに最適な方法です。Clojure はシンプルであり、他のすべてのオプションに溺れる前に基本に集中できるからです。
他にも多くのテンプレートとフレームワークがありますが、その多くはまだ見ていません。最近では、compojure テンプレートまたは試薬テンプレートのいずれかから始めて、必要に応じて追加のビットを追加することがよくあります。私は通常、テンプレートに selmar も含め、基本的に Luminus が使用するのと同じ構成を使用します。
おそらく、Web 開発用の優れた「フレームワーク」を取得するための最も重要な部分は、lein がどのように機能するか、および lein project.clj ファイルを実験して理解することです。適切な project.clj ファイルがあれば、ワークフローが決まります。適切なプロファイルを持つこと、さまざまな方法で repl を開始する機能、さまざまなライブラリをロードして、figwheel やブラウザーの repl を開始したり、jar を生成したりすることができるのは、すべて project.clj ファイルに関するものです。これを正しく行うと、環境は必要なワークフローだけを提供します。