Haskell之Yesod开发–简单网站开发(一)
来源:互联网 发布:python 方括号 编辑:程序博客网 时间:2024/06/01 16:34
复制**Book**P57中间的代码到新的模块中,不要忘记增加
module XXX where
需要增加以下两个库到.cabal中
http-typesblaze-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>...
0 0
- Haskell之Yesod开发–简单网站开发(一)
- Haskell之Yesod开发–简单网站开发
- Haskell之Yesod开发–简单网站开发(二)
- Haskell之Yesod开发–简单网站开发(三)
- Haskell之Yesod开发–简单网站开发(四)
- Haskell之Yesod开发–简单网站开发(五)
- Haskell之Yesod开发–基础环境
- Haskell之Yesod开发–边踩坑边开发(1)
- Haskell之Yesod开发–边踩坑边开发(2)
- Haskell之Yesod开发–边踩坑边开发(3)
- Haskell之Yesod开发–边踩坑边开发(4)
- Haskell之Yesod开发–边踩坑边开发(4.1)
- Haskell之Yesod开发–边踩坑边开发(2.1)
- Haskell的yesod框架-1
- Haskell的Yesod技术大全
- Haskell 开发环境搭建
- sublime text开发haskell
- WAP网站开发一
- Android性能调优
- java二叉树的遍历算法
- app 性能测试--弱网
- wxPython写计算器
- Error:Attribute application@icon value=(@drawable/ic_launcher) 报错的解决方法
- Haskell之Yesod开发–简单网站开发(一)
- Convert Sorted List to Binary Search Tree
- Haskell之Yesod开发–简单网站开发(二)
- Android—Greendao:SQLite Exception: no such table Error [duplicate]
- 1 微信企业号、订阅号、服务号之间有什么区别
- 浮点数的表示 问题
- TI低功耗蓝牙(BLE)介绍
- StoryBoard不使用AutoLayout情况下 按比例快速兼容适配iPhone6/6 Plus教程
- python替换字符串中的子串 %(xxxx)s