% stack templates | grep yesodyesod-hello-world(←現時点では削除されています) yesod-minimal yesod-mongo yesod-mysql yesod-postgres yesod-postgres-fay yesod-simple yesod-sqlite
以下、各テンプレートの説明です。後に出てくるテンプレートほど内容が複雑になっています。テンプレートを指定して新しいプロジェクトを生成する場合は以下のコマンドを実行します。
% stack new プロジェクト名 yesod-???
yesod-hello-world
最もシンプルなテンプレートapp.hs内のコードで"/"に対応するHomeハンドラだけが登録されている。configurationファイルなどは一切なし。Home"Hello World"を表示するだけ
yesod-minimal
- 次にシンプルなテンプレート。
- 以下のroutesファイルによって、Home, Addの2つのハンドラが登録されている。
- routes
/ HomeR GET /add/#Int/#Int AddR GET
- 5+7の通常(HTML形式)リンクと、JSON形式のリンクを表示
- 5+7の結果を出力(通常はHTML形式でレスポンスを返す)
- accept=application/jsonの場合のみJSON形式でレスポンスを返す
yesod-simple
- 各DB用のテンプレートのベースになるテンプレート。
- HTML, javascript, CSSの動的生成、リンク切れ検知など、DB接続と認証機能を除いて一通りの機能を確認できる。
- 以下のフォルダ構成が生成される
- app
- 通常起動、devel起動用のエントリ関数 通常起動は、引数で設定ファイル(yaml)を指定可能。
% yesod-simple config/settings.yml以下のコマンドでdevel起動。
% stack exec -- yesod devel
- routesファイル(ハンドラリスト)
/static StaticR Static appStatic /favicon.ico FaviconR GET /robots.txt RobotsR GET / HomeR GET POST /comments CommentR POST
- 静的ファイル置き場。デフォルトではcss, fontが配置される。
- テンプレートファイル置き場。Haskellコードを埋め込むことができる。
- *.hamlet: HTML
- *.julius: javascript
- *.lucius: CSS
- テストコード置き場。 以下のコマンドでテスト実行。
% stack test
- Handler
- 以下のHome, Common, Commentハンドラが生成されている。
- Home.hs
- ホーム画面定義。
- Common.hs
- FaviconR(favicon.ico)、RobotsR(robots.txt)への参照を定義。
- これらはFoundation.hsから参照される。
- Comment.hs
- DB接続がないため単にエラーを表示するだけ。
- Import
- Import宣言まとめ。
- Settings
- staticディレクトリ内のファイル参照を記載しておき、コンパイル時にリンク切れのチェックを行う。
yesod-mongo/mysql/postgres/sqlite
- 各DB用のconnectionコードと認証機能が追加されたテンプレート。
- それぞれ、MongoDB, MySQL, PostgreSQL, SQLiteと接続するためのコードが自動生成されます。
- yesod-simpleとの違いは下記の通り
- config
- route 下記の通り"/auth"が追加されています。
/static StaticR Static appStatic /auth AuthR Auth getAuth /favicon.ico FaviconR GET /robots.txt RobotsR GET / HomeR GET POST /comments CommentR POST
- DB接続のためのパラメタ追加。
- Comment.hs
- クライアントから送信されたコメントをDBに格納・参照する処理が定義されている。
- 認証済みの場合はユーザー情報も合わせて格納。
yesod-postgres-fay
- PostgreSQL+Fayを利用するためのテンプレート環境。
- 調査が追いついていないのですが、FayではHaskellの仕様のサブセットがサポートされていて、Haskellのコードをjavascriptにコンパイルしてくれるとこのこと。
0 件のコメント:
コメントを投稿