zoukankan      html  css  js  c++  java
  • Golang ECHOhtml模板处理【5】

    Golang echo默认并不包含关于视图模版的处理,只是提供了集成第三方模版引擎的接口。可以根据自己的需要选择任何第三方模版引擎。

    提示:开发的是接口服务,不展示html页面跳过篇。

    在echo中使用第三方模版引擎至少需要如下三个步骤:

    1. 实现echo.Renderer接口
    2. 注册模版引擎
    3. 在控制器中渲染模版并返回html页面

    下面以go自带的html/template模版引擎为例介绍如何使用模版引擎。

    1.实现echo.Renderer接口

    echo.Renderer接口定义:

    Renderer interface {
        //渲染函数定义
        //第一参数用于保存渲染模版后的结果
        //第二个参数是模版名字
        //第三个参数是传入模版的参数,可以是任意类型
        //第四个参数是echo.Context
    	Render(io.Writer, string, interface{}, Context) error
    }
    

    通过实现echo.Renderer接口自定义当调用Render函数的时候使用什么模版引擎来渲染模版。

    //自定义的模版引擎struct
    type Template struct {
        templates *template.Template
    }
    
    //实现接口,Render函数
    func (t *Template) Render(w io.Writer, name string, data interface{}, c echo.Context) error {
        //调用模版引擎渲染模版
        return t.templates.ExecuteTemplate(w, name, data)
    }
    

    2.注册模版引擎

    接下来,需要向echo实例注册模版引擎

    //初始化echo实例
    e := echo.New()
    
    //初始化模版引擎
    t := &Template{
        //模版引擎支持提前编译模版, 这里对views目录下以html结尾的模版文件进行预编译处理
        //预编译处理的目的是为了优化后期渲染模版文件的速度
        templates: template.Must(template.ParseGlob("views/*.html")),
    }
    
    //向echo实例注册模版引擎
    e.Renderer = t
    
    //初始化路由和控制器函数
    e.GET("/hello", Hello)
    

    3.在控制器中渲染模版并返回html页面

    完成模版引擎设置后,就可以在控制器函数中通过echo.Context对象的Render函数渲染模版并返回html页面.
    函数定义:
    Render(code int, name string, data interface{}) error

    参数说明:

    参数 说明
    code http状态码
    name 模版文件名
    data 模版参数,可以是任意类型数据

    例子:
    模版文件views/hello.html内容

    Hello, {{.}}!
    

    渲染模版文件

    func Hello(c echo.Context) error {
        //渲染hello.html模版文件,模版参数为world
        return c.Render(200, "hello.html", "World")
    }
    

    渲染结果为:Hello, world!

  • 相关阅读:
    virtualbox mout 错误解决
    Python pip 学习
    tzset()与localtime()
    TSE部署实践
    变量和关系符和JAVA基本类型笔记与常考面试题
    实例:判断客户是否中奖与纸牌互换,计算银行本息
    实例:五位数各位数之和与员工实领工资
    关于变量,JAVA基本数据类型,运算符类型,如何从控制台接收输入的数据
    Java的程序执行过程与编译原理
    CMD控制器常用命令
  • 原文地址:https://www.cnblogs.com/remixnameless/p/14318179.html
Copyright © 2011-2022 走看看