チケット用に別のスナップレットを作成する必要がありますか? スナップレット インフラストラクチャは、セッション管理、認証、データベース アクセス、管理パネル、ユーザー管理などの再利用可能なコンポーネントを対象としています。
自己完結型のチケット モジュールを複数の Web アプリケーションで使用する予定ですか? もしそうなら、ぜひ先に進んでスナップレットを作成してください。
いずれにせよ、スナップを使用しているときに複数の「モジュール」または「パーツ」でプロジェクトを整理する方法を少なくとも部分的に尋ねているように思えます。これについては、以下で説明しようと思います。マークを逃したと思われる場合はお知らせください。
チケット用に別のスナップレットを作成する必要がない場合:
1 つのサイトに固有の機能については、いくつかのモジュールを作成し、現在のアプリケーションのパッケージとモジュール階層内で機能のコードを開発する方がよいと思います。最近のスナッププロジェクトの整理方法について、いくつかのポイントを以下に示します。
MyApp.DB.
名前空間のモジュールの下にデータベース関連のコードを配置しました。MyApp.DB.Tickets
Tickets モジュールでの操作に必要なすべてのデータベース呼び出しを含む があります。
すべての UI 関連機能をMyApp.UI.
名前空間に配置しました。your 、 your 、 yourなどMyApp.UI.Tickets
を含むモジュールを配置できます。Handlers
Splices
Forms
フォームを処理するために、優れた消化機能ライブラリーを使用しています。まだ知らない場合は、このブログ投稿が役立つかもしれません。
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 という名前を付け、SnapletInit
using を公開し、別の snap アプリケーションでmakeSnaplet
使用して、この再利用可能な機能をすぐそこに含めるだけです。nestSnaplet