Haskell之Yesod开发–简单网站开发(一)
2015-06-16 15:37
555 查看
复制**Book**P57中间的代码到新的模块中,不要忘记增加
需要增加以下两个库到.cabal中
我认为执行顺序是这样
如果我们需要改进
了解了上面这点,那这里的
关于上面这一段解析,读者可尝试去掉
class值可以简写为 .classType
如果id不用计算,可以直接用#idvalue表示,如果需要计算,则仍然需要使用id=#{…}来设置
别忘记了maybe判断中可以直接使用模式匹配
module XXX where
需要增加以下两个库到.cabal中
http-types blaze-builder
$ renderHtml $[hamlet|...|] render
我认为执行顺序是这样
hamlet识别到
@?,调用
render函数,并将
@?{...}中的值传递给render函数,这个
{..}被解析为两项,
first恰好是一个
SomePage,第二项是一个
[(Text,Text)],这一点从
[(``page``),pack $ ...]上可以看出来
如果我们需要改进
render函数,需要注意其参数形式必须是
render::XXX->[(Text,Text)]->YYY,其中
XXX可自行定义,
YYY是由调用函数(这里是renderHtml函数)决定的,
[(Text,Text)]是由
@?{..}的第二项决定
了解了上面这点,那这里的
render就比较好理解了,我们来实际看一下
"/home" `append` decodeUtf8 (toByteString $ renderQueryText True (map (second Just) (SomePage,("page",pack $ show $ 3-1))) => "/home" `append` decodeUtf8 (toByteString $ renderQueryText True Some("page",Just(pack 2)) => "/home" `append` decodeUtf8("?page=2") => "/home?page=2"
关于上面这一段解析,读者可尝试去掉
render函数中的部分代码来自行检查
HTML标签属性
属性表值可用 A=B表示class值可以简写为 .classType
如果id不用计算,可以直接用#idvalue表示,如果需要计算,则仍然需要使用id=#{…}来设置
=两侧的文本,如果没有替换值,则左侧的成为key,右侧的用双引号包裹后作为value
条件标签
$if isAdmin XXX $elseif isLoggin YYY $else ZZZ
maybe判断
$maybe name <- maybename Something $nothing Nothing
别忘记了maybe判断中可以直接使用模式匹配
$maybe Person firstname lastname <- maybename Something
for标签
<ul> $for person <- people <li>Something
case标签
$case foo $of Left bar Something $of Right baz Something
with标签(不是很理解,留待以后解决)
doctype
为代码直接加上Html头$doctype 5 <html> <head>... <body>...
相关文章推荐
- Linux内核中Netfilter架构介绍
- 【Java安全技术探索之路系列:Java可扩展安全架构】之二十二:SASL(三):SASL编程模型.md
- 【Java安全技术探索之路系列:Java可扩展安全架构】之二十一:SASL(二):SASL类和接口.md
- 【Java安全技术探索之路系列:Java可扩展安全架构】之二十:SASL(一):SASL架构介绍.md
- 【Java安全技术探索之路系列:Java可扩展安全架构】之十九:JGSS(三):JGSS编程模型.md
- 【Java安全技术探索之路系列:Java可扩展安全架构】之十八:JGSS(二):JGSS类和接口
- 【Java安全技术探索之路系列:Java可扩展安全架构】之十七:JGSS(一):JGSS架构介绍
- 【Java安全技术探索之路系列:Java可扩展安全架构】之十六:JAAS(三):JAAS编程模型
- 【Java安全技术探索之路系列:Java可扩展安全架构】之十五:JAAS(二):JAAS类和接口
- 【Java安全技术探索之路系列:Java可扩展安全架构】之十四:JAAS(一):JAAS架构介绍
- 【Java安全技术探索之路系列:Java可扩展安全架构】之十三:JSSE(三):JSSE编程模型
- 【Java安全技术探索之路系列:Java可扩展安全架构】之十二:JSSE(二):JSSE类和接口
- 【Java安全技术探索之路系列:Java可扩展安全架构】之十一:JSSE(一):JSSE架构介绍
- 【Java安全技术探索之路系列:Java可扩展安全架构】之十:JCP(三):JCP编程模型
- 【Java安全技术探索之路系列:Java可扩展安全架构】之九:JCP(二):JCP类和接口
- 【Java安全技术探索之路系列:Java可扩展安全架构】之八:JCP(一):JCP架构介绍
- Android开发有用的三方网站
- 网站实时弹幕
- 如何理解Xen sHype/ACM安全架构
- android开发者应该收藏的优秀博客和技术网站