Dan*_*ton 5 haskell template-engine yesod hamlet
来自Yesod Book.
Hamlet在调用时自动访问范围内的变量.没有必要专门传递变量.
这个深刻的魔法是什么?它如何自动知道范围内的变量?
哈姆雷特基于模板Haskell ; 特别是,quasiquoter(ie [hamlet| ... |])用于内联模板,而splice(ie $(hamletFile "foo"))用于从文件创建模板.然后使用Template Haskell的内省特征访问变量.
除了允许自动访问变量之外,这还有其优点:
由于在编译时将Hamlet模板编译为常规Haskell代码,因此生成的模板可能比在运行时解析和解释的模板更有效.
从文件中读取模板时,文件在编译时被解析并嵌入到生成的二进制文件中,因此模板不必在运行时保留在同一位置,并且模板的有效性是静态保证的.
我相信这些优势适用于所有莎士比亚 -家庭模板.Haddock文档提供了有关可用的quasiquoter和splices的更多信息.