1

Haskell と Snap は初めてで、簡単なバグ追跡アプリケーションを書きたいと思っています。を使用して Snap プロジェクトをセットアップしましたが、$ snap init動作します。問題は、これ以上先に進む方法がわからないことです。

Ticketsデータベースを使用してバグ レポートを保存するスナップレットを作成し、メインの Web アプリケーションでそのスナップレットを使用したいと考えています。

スナップレットに関するドキュメントを読みましたが、ソース コードを配置する場所がわかりませんでした (/snapletsディレクトリにあると思いますか? もしそうなら、どのようにロードしますか?)。誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

5

チケット用に別のスナップレットを作成する必要がありますか? スナップレット インフラストラクチャは、セッション管理、認証、データベース アクセス、管理パネル、ユーザー管理などの再利用可能なコンポーネントを対象としています。

自己完結型のチケット モジュールを複数の Web アプリケーションで使用する予定ですか? もしそうなら、ぜひ先に進んでスナップレットを作成してください。

いずれにせよ、スナップを使用しているときに複数の「モジュール」または「パーツ」でプロジェクトを整理する方法を少なくとも部分的に尋ねているように思えます。これについては、以下で説明しようと思います。マークを逃したと思われる場合はお知らせください。

チケット用に別のスナップレットを作成する必要がない場合:

1 つのサイトに固有の機能については、いくつかのモジュールを作成し、現在のアプリケーションのパッケージとモジュール階層内で機能のコードを開発する方がよいと思います。最近のスナッププロジェクトの整理方法について、いくつかのポイントを以下に示します。

  • MyApp.DB. 名前空間のモジュールの下にデータベース関連のコードを配置しました。MyApp.DB.TicketsTickets モジュールでの操作に必要なすべてのデータベース呼び出しを含む があります。

  • すべての UI 関連機能をMyApp.UI.名前空間に配置しました。your 、 your 、 yourなどMyApp.UI.Ticketsを含むモジュールを配置できます。HandlersSplicesForms

  • フォームを処理するために、優れた消化機能ライブラリーを使用しています。まだ知らない場合は、このブログ投稿が役立つかもしれません。

  • MyApp.UI.Helpers私は通常、すべて/ほとんどの UI モジュールで使用される共通コードを配置する共有 UI ヘルパー ライブラリを持っています。

  • 私は通常、フォームヘルパーライブラリを共有していますMyApp.UI.Forms

  • 私のアプリケーションが Web UI を公開するという事実に接するすべてのコードは、MyApp.UI.名前空間の外に出ます。したがって、アプリケーションでオフライン分析を実行する必要がある場合は、それらをMyApp.Analysis.名前空間に配置できます。

でハンドラを定義してエクスポートMyApp.UI.Ticketsしたら、ファイルに移動してSite.hs、特定のルートでアプリケーションにワイヤリングできます。

データベース接続の処理方法については、postgresql-simple snaplet を参照してください。

ただし、スナップレットを作成する必要がある場合:

スナップレットは、インフラストラクチャを使用する単なるスタンドアロン アプリケーションでありSnap.Snaplet、(通常) 独自の.cabalファイルを持ち、(通常) 独自の Haskell パッケージです。Snap は、この再利用可能な自己完結型アプリケーションを別のスナップ アプリケーションに埋め込むか、ネストする方法を提供します。ロシア人形のヒエラルキーを考えてみてください。

上記のセクションで説明したのと同様のことを実行したと仮定すると、スナップレットに変換する準備が 95% 完了しています。アプリケーションに snaplet-tickets という名前を付け、SnapletInitusing を公開し、別の snap アプリケーションでmakeSnaplet使用して、この再利用可能な機能をすぐそこに含めるだけです。nestSnaplet

于 2012-06-11T05:22:59.477 に答える