LoginSignup
6
1

More than 1 year has passed since last update.

YesodでHelloWorld!

Last updated at Posted at 2018-12-18

YesodでHelloWorldします。

Yesodを検索するとデフォルト画面の出し方や、シェークスプアテンプレートを使わないサンプルはよく見るのですが、ページを追加してHelloWorldする記事があまりなく、少しはまったので記事にしました。

OS: Windows8.1 64bit
Stack: 1.7.1

まずはstackでmy-projectプロジェクトを作成。

stack new my-project yesod-sqlite 
cd /d my-project

yesodをインストール。

stack install yesod-bin --install-ghc

ここまででyesodのデフォルトページが作成されています。
実行してみます

stack build
stack exec -- yesod devel

http://localhost:3000 
にアクセスすると、こんな感じのデフォルトページが表示されます。

p1.png

Ctrl+Cでいったん止めます。

HelloWorldを表示するページを作成。
スキャフォルド機能でページを追加します。

stack exec -- yesod add-handler

下記のように質問されるので、それぞれ Hello, /Hello, GETと入力します。

Name of route (without trailing R):Hello
Enter route pattern (ex: /entry/#EntryId):/Hello
Enter space-separated list of methods (ex: GET POST): GET

/Helloというページが作成されますが、アクセス許可を与える必要があります。
my-project\src配下のFoundation.hsファイルで設定します。

162行目あたりに

-- Routes not requiring authentication.

という記載があるので、その下に一行追加します

isAuthorized HelloR _ = return Authorized

実行してみます。

stack build
stack exec -- yesod devel

http://localhost:3000/Hello
にアクセスすると下記のように表示されます。
p2.png

Ctrl+Cで止めて、HelloWorldが表示されるように修正します。

my-project\src\Handler配下のHello.hsファイルを修正します。
開くと下記のように作成されています。

module Handler.Hello where

import Import

getHelloR :: Handler Html
getHelloR = error "Not yet implemented: getHelloR"

先頭行にライブラリを追加し、最下行をコメントアウトして、一行追加します。

{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeFamilies #-}

module Handler.Hello where

import Import

getHelloR :: Handler Html
--getHelloR = error "Not yet implemented: getHelloR"
getHelloR = defaultLayout $(widgetFile "hello")

my-project\templatesにhello.hamletファイルを作成して下記のように記載します。

<p>HelloWorld!

閉じタグは不要です。

実行します。

stack builid
stack exec -- yesod devel

http://localhost:3000/Hello
にアクセスすると下記のようにHelloWorld!が表示されます。
p3.png

めでたしめでたし。

https://github.com/ringo-apo/qiita_hs_yesod_hello

参考

[Yesod入門(1)] Stack,Yesodのインストール~起動 │ Web備忘録
書籍 Haskellで作るWebアプリケーション

6
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1