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로 만드는 웹 애플리케이션
Reference
이 문제에 관하여(Yesod에서 HelloWorld!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ringo-apo/items/751f4a472d7bf6c36b68텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)