Yesod에서 HelloWorld!

3553 단어 yesod하스켈
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
를 방문하면 이러한 느낌의 기본 페이지가 표시됩니다.



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
에 액세스하면 아래와 같이 표시됩니다.


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!가 표시됩니다.


죄송합니다.

htps : // 기주 b. 코 m / 사과 아포 / 쿠이타 _ hs_ 어서 d_ 헉

참고



[예소드 소개(1)] 스택, 예소드 설치 및 시작 │ Web Memorandum
책 Haskell로 만드는 웹 애플리케이션

좋은 웹페이지 즐겨찾기