2012-03-10 8 views
1

Ruby on RailsのようなWebフレームワークでは、特定のリクエストを処理するために必要なデータベースクエリは、コントローラクラスのクライアントにページが渡される前に発生しますが、clojureのようなものはありません。データベースクエリーとそのようなものは、クロージャーWebアプリケーションでどこで処理されるべきですか?私の腸は、ちっくらのページ内で関数を呼び出し、その関数内でHTMLを生成するように指示していますが、わかりません。あなたの時間と配慮していただきありがとうございます。clojureでWebアプリケーションを構築するとき、ページの準備はどこに属していますか?

答えて

2

Clojureには多くの「フルスタック」Webフレームワークはなく、ほとんどのClojure Webアプリケーションは1つで構築されていません。さまざまなことに対応するフレームワークとツールのコレクションがありますが、これらのコンポーネントをビルディングブロックとして使用してアプリケーションを開発する可能性があります。ルーティング機能、認証、ビューレンダリング、テンプレート、RESTful Webサービス、および永続性の選択肢があります。特定の物事があなたのアプリケーションに行くべき

あなたのアーキテクチャに依存します - 典型的な、3-tierMVC WebアプリケーションはCQRSCEPを使っている本格的なスケーラブルなアプリ、あなたは次のFacebookやTwitterの構築を支援し、他の派手なパターンの中から違って見えます。

3層MVCアーキテクチャーを使用して概念的にWebアプリケーションを設計する場合は、ビューレイヤー、ビジネスロジック、および永続性レイヤーが明確に分離されます。アレックスが彼の答えで言ったように - それはおそらく、これらのことを結びつけるコントローラーだろう。複雑なビジネスロジックを持たない場合、コントローラはビ​​ューを構築するロジックに渡す前に、永続性レイヤーから関数を直接呼び出すことがあります。

「ミドルウェア」内のパーシスタンス層からデータを取得することが有用な場合があります。要求が到着するたびにRingによって呼び出される関数です。これは、ログインしたユーザーなど。

+0

ここに私の帽子を投げたかったので、私はclojureのための完全なスタックフレームワークを作っています:[clojureの海岸](https://github.com/swlkr/coast)、それはhiccupを使いますが、レールのやり方は、積極的な記録式なし。試してみる! – swlkr

1

IMOでは、ビューを生成するコードによって関数を呼び出す必要があり、関数の結果を使用してビューをレンダリングする方法が決定されます。 Clojureの観点から見ると、コントローラはルータによって呼び出される関数と見なすことができます。

+1

私はclojureのウェブスタックで全く遊んだことがありますか? –

関連する問題