Chapter 3. Basics
The first step with any new technology is getting it running. The goal of this chapter is to get you started with a simple Yesod application and cover some of the basic concepts and terminology.
Hello, World
Let’s get this book started properly with a simple web page that says “Hello, World”:
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
import
Yesod
data
HelloWorld
=
HelloWorld
mkYesod
"HelloWorld"
[
parseRoutes
|
/
HomeR
GET
|
]
instance
Yesod
HelloWorld
getHomeR
::
Handler
Html
getHomeR
=
defaultLayout
[
whamlet
|
Hello
,
World
!|
]
main
::
IO
()
main
=
warp
3000
HelloWorld
If you save the preceding code in helloworld.hs and run it with runhaskell
helloworld.hs
, you’ll get a web server running on port 3000. If you point your
browser to http://localhost:3000, you’ll get the following HTML:
<!DOCTYPE html>
<html><head><title></title></head><body>
Hello, World!</body></html>
We’ll refer back to this example throughout the rest of the chapter.
Routing
Like most modern web frameworks, Yesod follows a front controller pattern. This means that every request to a Yesod application enters at the same point and is routed from there. As a contrast, in systems like PHP and ASP, you usually create a number of different files, and the web server automatically directs requests to the relevant file.
In addition, Yesod uses a declarative style for specifying routes. In our earlier example, this looked ...
Get Developing Web Apps with Haskell and Yesod, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.