【发布时间】:2012-06-26 18:13:04
【问题描述】:
有人能解释一下默认快照project template 中发生了什么吗?
--------------------------------------------------------------------------
-- | Handle login submit
handleLoginSubmit :: Handler App (AuthManager App) ()
handleLoginSubmit =
loginUser "login" "password" Nothing
(\_ -> handleLogin err) (redirect "/")
where
err = Just "Unknown user or password"
-- | Render login form
handleLogin :: Maybe T.Text -> Handler App (AuthManager App) ()
handleLogin authError = heistLocal (bindSplices errs) $ render "login"
where
errs = [("loginError", textSplice c) | c <- maybeToList authError]
| The application's routes.
routes :: [(ByteString, Handler App App ())]
routes = [ ("/login", with auth handleLoginSubmit)
, ("/logout", with auth handleLogout)
, ("/new_user", with auth handleNewUser)
, ("", serveDirectory "static")
]
- 为什么会返回 ()?
- “控制器”(您在 MVC 中将其称为)函数的标准签名是什么?
- 它怎么知道使用
index.tpl作为/路由的模板? - 如果我只想制作一个简单的个人网络应用,我该如何摆脱身份验证层?
文档和教程主要涵盖了 snapplet(或模板),但没有涵盖任何 Haskell。很高兴看到一个如何编写书店之类的应用程序或博客的示例(官方 snap 网站将他们的博客条目存储在 markdown 中 - 所以我不确定那里发生了什么)。
【问题讨论】:
-
Snap 文档假定您已经具备一些 Haskell 知识。听起来您应该从一些基本的 Haskell 教程开始。
标签: haskell haskell-snap-framework