返回

Go Web 模板简介

发布时间:2022-12-03 18:18:27 373
# html# php# 服务器# 数据# 服务器

Web 模板就是预先设计好的 HTML 页面,它可以被模板引擎反复地使用,来产生 HTML 页面。Go 的标准库提供了 ​​text/template​​​ , ​​html/template​​ 两个模板库。大多数 Go 的 Web 框架都使用这些库作为 默认的模板引擎

模板与模板引擎

模板引擎就是通过合并 ​​模板​​​ 与 ​​上下文数据​​ ,产生最终的 HTML 。

两种理想的模板引擎

无逻辑模板引擎

  • 通过占位符,动态数据被替换到模板中
  • 不做任何逻辑处理,只做字符串替换
  • 处理完全由 handler 来完成
  • 目标是展示层和逻辑的完全分离

逻辑嵌入模板引擎

  • 编程语言被嵌入到模板中
  • 在运行时由模板引擎来执行,也包含替换功能
  • 功能强大
  • 逻辑代码遍布 handler 和 模板,难以维护

Go 的模板引擎

主要使用的是 ​​text/template​​​ ,HTML 相关的部分使用了 ​​html/template​​ ,是个混合体。模板可以完全无逻辑,但又具有足够的嵌入特性。和大多数模板引擎一样,Go Web 的模板位于无逻辑和嵌入逻辑之间的某个地方。

Go 模板引擎的工作原理

在 Web 应用中,通常是由 handler 来触发模板引擎。客户端发送一个请求给服务器,服务器中的多路复用器指定某个 ​​handler​​​ , ​​handler​​​ 处理器调用模板引擎,并将使用的模板(通常是一组模板文件和动态数据)传递给引擎,模板引擎生成 HTML ,并将其写入到 ​​ResponseWriter​​​ , ​​ResponseWriter​​ 再将它加入到 HTTP 响应中,返回给客户端。具体过程可以参考下图:

Go Web 模板简介_数据

关于模板

模板必须是可读的文本格式,扩展名任意。对于 Web 应用通常就是 HTML 。​​text/template​​​ 是通用模板引擎, ​​html/template​​ 是 HTML 模板引擎。模板里面会内嵌一些命令,叫做 action , action 位于双层花括号之间:​​{{ . }}​​ 。它可以命令模板引擎将其替换成一个值。

使用模板引擎

首先定义模板,然后解析模板源(可以是字符串或模板文件),从而创建一个解析好的模板的 struct。执行解析好的模板,并传入 ​​ResponseWriter​​​ 和 ​​数据​​​ 。这会触发模板引擎组合解析好的模板和数据,来产生最终的 HTML,并将它传递给 ​​ResponseWriter​​ 。下面的例子,首先创建 template.html 文件:


<html lang="en">
<head>
<meta charset="UTF-8">
<title>Templatetitle>
head>
<body>
{{ . }}
body>
html>

然后写 go 代码:

package main

import (
"html/template"
"net/http"
)

func main() {
server := http.Server{
Addr: "localhost:8080",
Handler: nil,
}

http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
t, _ := template.ParseFiles("template.html")
t.Execute(w, "Model")
})

server.ListenAndServe()
}

运行程序并访问 ​​http://localhost:8080/​​​ 就能看到显示代码写入的 ​​Model​​ 字样。



特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
NumPy 简易教程 2022-12-03 17:33:00