博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go Revel - Templates(模板)
阅读量:6832 次
发布时间:2019-06-26

本文共 2144 字,大约阅读时间需要 7 分钟。

revel使用Go官方的模板库。它会在两个目录查找模板文件: 1、应用的`views`目录以及它的所有子目录 2、revel库自己的`templates`目录 revel为错误页面提供了模板(在`dev`开发模式下,编译错误会更友好的显示),但是,如果用相同的名字创建一个模板,revel则会优先使用自己开发的模板。如 `app/views/errors/500.html` ##渲染内容 revel使用`RenderArgs`数据map来执行模板。除了从应用提供数据,revel也提供了: 1、“errors”, 从`Validation.ErrorMap`返回的错误信息 2、“flash”, 上一个请求携带的flash信息 ##模板函数 Go本身为模板提供了一些函数方便我们使用。revel也添加了一些实用的函数: **eq** 类似`a == b`的条件判断:
**set** 在当前作用域设置一个变量: {
{set . "title" "Basic Chat room"}}

{
{.title}}

**append** 将一个给定的值添加至数组/切片,如果数组/切片不存在,则新建一个。 {
{append . "moreScripts" "js/jquery-ui-1.7.2.custom.min.js"}} {
{range .moreStyles}} {
{end}} **field** 对Input表单字段进行操作。 给定一个字段名称,它将返回一个包含下列成员的struct: `Id`: 字段名,会转换为恰当的`HTML id`元素 `Name`: 字段名 `Value`: `RenderArgs`中当前字段的值 `Flash`: 当前字段的flash信息 `Error`: 任何一个与当前字段有关的错误信息 `ErrorClass`: `hasError`的原始信息,如果不存在则为空字符串 {
{with $field := field "booking.CheckInDate" .}}

Check In Date: * {

{$field.Error}}

{
{end}} **option** 结合`field`模板函数生成`HTML option`元素 {
{with $field := field "booking.Beds" .}} {
{option $field "1" "One king-size bed"}} {
{option $field "2" "Two double beds"}} {
{option $field "3" "Three beds"}} {
{end}} **radio** 结合`field`模板函数生成`HTML radio`元素 {
{with $field := field "booking.Smoking" .}} {
{radio $field "true"}} Smoking {
{radio $field "false"}} Non smoking {
{end}} **nl2br** 生成HTML的换行标签 You said:
{
{nl2br .commentText}}
**pluralize** 转换单词的复数形式 There are {
{.numComments}} comment{
{pluralize (len comments) "" "s"}} **Including** Go允许将一个模板嵌入至另一个模板 {
{template "header.html" .}} 有两点需要注意: 1、路径必须是`app/views`的相对路径 2、任何被嵌入的模板必须位于`app/views`目录的根位置(这个限制希望是暂时的) **Tips** revel的示例程序说明了如何有效的使用模板,请特别留意这两个示例: *revel/samples/booking/app/views/header.html* *revel/samples/booking/app/views/header.html* 它利用模板函数设置模板自己的html header和样式: {
{.title}} {
{range .moreStyles}} {
{end}} {
{range .moreScripts}} {
{end}} 引用html header模板: {
{set . title "Hotels"}} {
{append . "moreStyles" "ui-lightness/jquery-ui-1.7.2.custom.css"}} {
{append . "moreScripts" "js/jquery-ui-1.7.2.custom.min.js"}} {
{template "header.html" .}} ##自定义模板函数 revel应用可以注册自定义模板函数: func init() { revel.TemplateFuncs["eq"] = func(a, b interface{}) bool { return a == b } }

转载地址:http://bytkl.baihongyu.com/

你可能感兴趣的文章
构建Postfix邮件系统(二) -- SMTP认证发信+SquirrelMail
查看>>
Oracle 使用concat函数需要注意的地方
查看>>
条件测试
查看>>
linux磁盘管理
查看>>
线上部署链路聚合bonding
查看>>
学LIUNX的常用英语补习
查看>>
单点登录CAS解决方案<一>:纯净CAS-Server
查看>>
Mysql 数据库表区分大小写问题
查看>>
什么是openstack的metadata
查看>>
原创:SecureCRT连接linux终端颜色配置
查看>>
java关键字--this
查看>>
SDL_AudioSpec结构体分析
查看>>
Autoconf和Automake,自动生成Makefile
查看>>
观影《寒战》
查看>>
create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):
查看>>
今天的学习
查看>>
我的友情链接
查看>>
[Unity] 文件夹图像资源的读取
查看>>
【go语言】wait,wait for me
查看>>
Kubernetes Dashboard 与DNS部署
查看>>