このガイドでは、Clojureで利用可能なwebフレームワークオプションについて説明し、推奨事項を示します。
あなただけの学習している場合は、推奨ライブラリ(近日公開)から独自のスタックをロールバックします。 それはすべてがどのように動作するかを理解するための最良の方法になります。
アプリケーションを構築するための実稼働テスト済みの基盤が必要な場合は、Pedestalを使用します。
作業を伴わずに独自のスタックをローリングする柔軟性が必要な場合は、Luminusを使用してください。
はじめに
Clojureの初心者からよく聞かれる質問の一つは、”どのwebフレームワークを使うべきですか?「これは良い質問です。 PythonにはDjangoがあります。 PHPでは、Drupal。 もちろん、Rubyにはすべてのwebフレームワークの王であるRuby on Railsがあります。 しかし、Clojureでは、これは答えるのが難しい質問です。 フレームワークとは何か、ライブラリとは何かを決定することさえ困難な場合があります。 我々は最初にそれに対処する必要があります。
webフレームワークとは
このガイドでは、webアプリケーションを構築するための包括的なアプローチを提供するコードと依存関係のコレクションとしてwebフレームワークを定義します。 この定義は、CompojureやRingなどの一般的にフレームワークと呼ばれるいくつかのライブラリを除外しています。 しかし、私がここで検討しているいくつかの偉大な候補がまだあります。
独自のスタックをロールすることは、Clojureでは事前に構築されたフレームワークを使用する一般的な代替手段であり、全体的なアプローチ(つまり、既存のライ
推奨基準
このガイドの目的は、さまざまなニーズのwebフレームワークに対する強力な推奨事項を提供することです。 各フレームワークについて調べる基準は次のとおりです。
Documentation
フレームワークには簡単に従うドキュメントがありますか? 私は、高度なトピックを通じて初心者のチュートリアルを探しています。
コミュニティ
大規模で活発なコミュニティは、フレームワークの実行可能性の重要な部分です。 大規模なコミュニティは、より簡単に提供し、依存関係を最新の状態に保ち、より完全なソリューションを構築できます。
成熟度
プロジェクトの年齢、そしてそれが大規模なサイトでの生産にどのくらい使用されているかは、もう一つの重要な要素です。 私は重要なサイトのために展開されている古いフレームワークを好む。
ウェブ標準
ビッグスリーのウェブ言語(HTML、CSS、JavaScript)のほかに、HTTPプロトコル自体の標準と”ベストプラクティス”のホストがあります。 私はHTTP応答コード、コンテントネゴシエーション、CORS、Websocketなどについて話しています。 フレームワークはどのようにこれらの標準を利用していますか? それはどのようにそれらに違反しますか?
アプローチ
フレームワークは全体的なアプローチを提供しなければならないので、アプローチ自体を考慮する必要があります。 フレームワークはアプリケーションの構築にどのようにアプローチしていますか?
デプロイ
アプリケーションの準備ができたら、デプロイする必要があります。 どのような展開オプションが利用可能ですか? より幅広い品種が良いです。
強くお勧め
これを言うのは私には奇妙な感じがしますが、初心者のための最良の選択肢はまだあなた自身を転がすことです。 あなた自身の積み重ねを転がすことはそれがようであるかもしれない程に困難ではない。 いくつかのライブラリから機能スタックを構築することができます。 多くの場合、より堅牢でビルドされたフレームワークは、スタックの構築方法について何百もの決定を下しましたが、彼らが選んだライブラリの軍団を理
学習に適していることに加えて、独自のロールを使用すると、特定の機能をサポートするかどうかを完全に制御できます。
最大の欠点は、あなた自身のために多くの決定をしなければならないということです。 そこに多くの図書館があり、それらの中で選択することは困難な命題になる可能性があります。 一つの慰めは、あなた自身のライブラリを一緒に置くとき、少なくともClojureでは、あなたがあなたのために動作しないことが判明した場合、ライブラリを
より完全なソリューションが必要なとき(そしてそうするとき)、自分でビルドし続けると、より堅牢なフレームワークに非常に似たものに到達します。 私はあなた自身の完全なフレームワークを構築するのではなく、他の推奨される解決策のいずれかに切り替えることをお勧めします。 幸いなことに、それらはすべてリング標準で動作するので、それらの間の切り替えは簡単です。
Pedestal(GitHub)
Pedestalは、現代のストリーミングwebアプリケーションを開発するために、もともとCognitectによって作成された成熟したライブラリのセットです。 これは、時間の経過とともにサーバーからクライアントにデータをストリーミングできるようにする、長寿命の接続を中心に構築されています。 その機能をサポートするために、Pedestalはインターセプタのアイデアを発明しました。
Pedestalは成熟しており、活発なコミュニティがあり、多種多様な展開オプションをサポートしており、webアプリケーションを良好にサポートしているため、Pedestalをお勧めします。 それに対する二つのノックは、その文書化と統一的なアプローチの欠如です。 でもガイドがんの基礎こんにちは、世界! アプリケーション。 しかし、私は完全なアプリケーションをどのようにまとめるべきかを説明するものは見つかりませんでした。 アプローチの台はあなたが必要とする低レベルの基礎を提供することである最初から始まるより少し高く立つため台のように促進する。 確かに、その基礎は重要ですが、自分自身を選択して構築するためには、開発者に多くのことが任されています。 例えば、それは意図的にHTMLテンプレートの解決策を持っていません。 それは”API-first”と呼んでいます。 私は完全なwebフレームワークにHTMLを作成するための解決策があることを期待しています。
これらの問題にもかかわらず、私はアプリケーションを構築するための強固で柔軟な基盤としてPedestalをお勧めします。
Luminus(GitHub)
Luminusは基本的にテンプレートプロジェクトです。 そのテンプレートから新しいwebアプリケーションを作成し、すべてがあなたのために設定されます。 Luminusはテンプレートのオプションをいくつか提供していますが、一般的には、そのアプローチはあなたのために選択をすることです—時には独自のライブラ プロジェクトが作成されると、あなたの上に構築したり、あなたが合うように変更するための完全なwebスタックを持つことになります。 主な利点は、図書館の選択を導いた統一されたビジョンです。
Luminusは、webアプリケーションを書くために必要なすべてを提供することを目指しています。 ルートからセッション管理、ClojureScriptのコンパイル、データベースの移行まで、すべてを取得できます。 すべて事前に設定されているため、すぐにアプリケーションロジックを開始できます。 Luminousは、アプリケーションで10年以上の作業を経て自分で構築するライブラリと構成のセットのように考えてください。 最初は必要ないかもしれませんが、最終的にはセキュリティ、ロギング、国際化などの懸念が必要になります。 ルミナスは一つのコマンドであなたにそれを与えます。
Luminusの主な欠点は、多くのライブラリが直接公開されていることです。 はい、それはあなたがするようにそれらを設定する力を与えます。 しかし、それはまた、あなたがデフォルトの動作に基づいて構築したいかどうかを理解することがたくさんあることを意味します。 幸いにも、ドキュメントの話は優れています。 Luminusを使用してwebアプリケーションを構築するための推奨されるアプローチを文書化した本もあります。
さらに、それは何年も前から存在しており、大規模なアプリケーション用に展開されており、さまざまな展開オプションを持っています。
その他の注目のフレームワーク
これらのフレームワークは、革新的なアプローチにとって興味深いものです。
Fulcro(GitHub)
Fulcroはfullstackソリューションです。 フロントエンドでReactを使用しますが、クライアントからデータベースへの完全なデータモデルがあります。 そのような統一的なビジョンが魅力的な場合は、試してみてください。 優れた文書があり、それはまだ積極的に開発されています。
Duct
Ductは、webアプリケーションを一連の構成として構築するleiningenテンプレートです。 たとえば、ダクトでは、ルーティングは構成です。 移行は構成です。 この統一されたデータ指向のアプローチを使用して、確定的に再ロードできるwebアプリケーションを構築します。 フレームワークは牽引力を得ているようです。
Tadam
tadamは、シンプルなサイトを非常に簡単に書くために、既存のライブラリの数を設定し、標準的なディレクトリ構造を作成しました。 それはまだ新しいが、アクティブです。
Coast on Clojure(GitHub)
Coast on Clojureは、物事をシンプルに保つことに焦点を当てながら、完全なソリューション(HTMLを提供するデータベース)を提供します。
Hoplon(GitHub)
Hoplonは興味深いアプローチを持つfullstackソリューションです。 フロントエンド部分はClojureScriptをコンパイルし、スプレッドシートのようなデータフローモデルを使用する対話型コンポーネントを構築できます。 サーバー上の関数のプロキシである関数を呼び出すことで、バックエンドに接続できます。 これにより、ルーティング状況全体をバイパスできます。 その上の開発は遅いです。
推奨されていない
これらのフレームワークは、あまりにも長い間積極的に開発されておらず、十分な牽引力を得ていないため、推奨されていません。 私は彼らの非アクティブな開発だけに基づいてそれらをお勧めしませんので、私は技術的なメリットにそれらを評価していません。
- webnf
- Clojure on Coils
- joodoo
- Datsys
not frameworks
これらのプロジェクトはフレームワークと呼ばれることが多いが、”webアプリケーションを構築するための全体的なアプロー 私はここでそれらを評価していません。