目录

一、简介

二、模版库

三、菜鸟实战

1、新建文件

2、编译和运行

3、运行结果

3.1、运行后服务启动,控制台输出

3.2、浏览器输入后结果

一、简介

在 Web 中, 我们通常需要在后端将一些数据渲染到 HTML 文档中,  HTML 就可以在浏览器中显示,从而实现动态的网页效果。

模板可以被理解为事先定义好的 HTML 文档。模板渲染可以被简单理解为文本替换操作: 是后端用相应的数据去替换 HTML 文档中实现准备好的标记。模板技术多种多样,但本质是将模板文件和数据通过模板引擎生成最终的HTML文档。

二、模版库

Go 提供了两个基础模板库 :

  • text/template
  • html/template

html/template 在渲染页面模板时会在后台进行一些编码,以帮助防止造成代码注入(XSS 攻击),用的比较多,所以我们主要使用这个模版库来做实战。

三、菜鸟实战

实战场景:使用 html/template 模版渲染数据到浏览器中

马上安排!

1、新建文件

/** @Author: 菜鸟实战* @FilePath: /go110/go-014/g014.go* @Description: html/template 模版渲染数据到浏览器*/package mainimport ("fmt""html/template""log""net/http""runtime"
)// 用户信息
type User struct {Name   stringGender stringAge    int
}// 显示数据
func render(w http.ResponseWriter, r *http.Request) {//加载模板 解析模板, 此处输入文件绝对路径t, err := template.ParseFiles("yourpath/index.html")if err != nil {log.Println("模版解析错误, err %v ", err)return}// 渲染字符串name := "user1"//err = t.Execute(w, name)// 渲染结构体user := User{Name:   name,Gender: "女",Age:    23,}// 渲染 mapm := map[string]interface{}{"name":   name,"gender": "男","age":    25,}//err = t.Execute(w, m)// 渲染数组carList := []string{"汽车","火车","货车",}// 把对象传输到模板展示err = t.Execute(w, map[string]interface{}{"name":    name,"m":       m,"user":    user,"carList": carList,})if err != nil {log.Println("渲染模版失败, err %v", err)return}
}func main() {// 使用内置函数打印println("Hello", "菜鸟实战")http.HandleFunc("/", render)err := http.ListenAndServe(":8009", nil)if err != nil {log.Println("http服务启动异常, err: %v", err)}// 当前版本fmt.Printf("版本: %s \n", runtime.Version())fmt.Printf("菜鸟实战,持续学习! \n")
}

对应的模版文件 index.html 为

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Hello</title>
</head>
<body>
<p>名称 {{ .user.Name }}</p>
<p>年龄 {{ .user.Age }}</p>
<p>性别 {{ .user.Gender }}</p>
​
<p>名称 {{ .m.name }}</p>
<p>年龄 {{ .m.age }}</p>
<p>性别 {{ .m.gender }}</p><hr>{{if .carList}}{{range .carList}}<div>{{ . }}</div>{{else}}<div><strong>no rows</strong></div>{{end}}{{else}}<p>carList为空</p>{{end}}
</body>
</html>  

2、编译和运行

# 1、生成模块依赖
go mod init g014
 
# 2、编译
go build g014.go 
 
# 3、编译后的目录结构

└── go-014
    ├── g014
    ├── g014.go
    └── go.mod
    └── index.html

# 4、运行
go run g014

3、运行结果

3.1、运行后服务启动,控制台输出

Hello 菜鸟实战

3.2、浏览器输入后结果

菜鸟实战,持续学习!

【Go实战基础】程序里面数据是如何显示到浏览器当中的相关推荐

  1. 微信小程序绑定数据页面不显示并且页面没有报错

    <!--index.wxml--> <view> {{ message }} </view> js Page({ data: { message: 'Hello M ...

  2. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(配置数据点抖动显示jitter)实战

    R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(配置数据点抖动显示jitter)实战 目录 R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(配置 ...

  3. 微信小程序开发数据缓存基础知识辨析以及运用实例

    微信小程序开发数据缓存基础知识辨析以及运用实例 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的 ...

  4. matlab软件及基础实验第8单元,《MATLAB统计分析与应用:40个案例分析》程序与数据(内含彩蛋)...

    [实例简介]Matlab教材及随书光盘,超实用的好书,强烈推荐! MATLAB统计分析与应用 40个案例分析.pdf <MATLAB统计分析与应用:40个案例分析>程序与数据.rar 第1 ...

  5. Nginx实战基础篇六 通过源码包编译安装部署LNMP搭建Discuz论坛

    Nginx实战基础篇六 通过源码包编译安装部署LNMP搭建Discuz论坛 版权声明: 本文遵循"署名非商业性使用相同方式共享 2.5 中国大陆"协议 您可以自由复制.发行.展览. ...

  6. 大数据基础——Hadoop大数据平台搭建

    文章目录 前言 Hadoop大数据平台搭建 一.Hadoop原理和功能介绍 二.Hadoop安装部署 三.Hadoop常用操作 总结 前言 分布式机器学习为什么需求大数据呢?随着海量用户数据的积累,单 ...

  7. 零基础转行大数据可行吗?大数据开发需要什么基础呢?

    IT行业发展速度快,市场需求大,而且,程序员薪酬高.福利待遇高,成为很多从业者向往的职业,当然,也刺激了很多非计算机专业的从业者进入该领域.转行进入IT行业在最近的几年一直是个热门,那么对于0基础的求 ...

  8. 推荐零基础学习大数据的10本经典图书

    学习大数据并不是一蹴而就的事情,及时工作多年的开发工程师都需要不断的补充新鲜的知识内容.目前学习大数据知识可以通过视频和图书两种方式学习,视频的优势在于能够将老师的个人开发经验传授给学习者,而图书的优 ...

  9. Python爬虫入门实战之猫眼电影数据抓取(理论篇)

    前言 本文可能篇幅较长,但是绝对干货满满,提供了大量的学习资源和途径.达到让读者独立自主的编写基础网络爬虫的目标,这也是本文的主旨,输出有价值能够真正帮助到读者的知识,即授人以鱼不如授人以渔,让我们直 ...

  10. Python实战小程序——Excel操作

    Python中的Excel操作        python中的xlrd和xlwt两个模块可以对Excel进行各项操作.      第一步:安装模块的方法:       1.下载一个ez_setup.p ...

最新文章

  1. 逆战服务器在哪个文件夹,逆战的背景音乐文件夹放在哪?别说在服务器上面!...
  2. linux入门(三)常见Linux指令及其用法
  3. 【新书】分布式强化学习
  4. 通过Blazor使用C#开发SPA单页面应用程序(2)
  5. JSP过滤器Filter配置过滤类型汇总
  6. 微信小程序 - 锚点功能的实现
  7. PHP三年15K,程序员月薪15K相亲三年才成功,被拒理由:这个薪资提鞋都嫌弃
  8. 基于shell 脚本处理文本数据流程
  9. Python学习笔记之 循环,列表生成式,生成器,迭代器
  10. Java-Android 之出滚动条和卷轴页面
  11. 【WebGIS毕业设计】(一)前言、开题与参考文献
  12. 软件工程总结笔记——软件详细设计(五)
  13. 计算机术语横幅迎新,内蒙古师范大学用代码写迎新条幅,还有哪些搞笑的迎新标语?...
  14. 微信小程序地区选择,单级学校选择和省,市,区选择
  15. leetcode 1419 数青蛙
  16. 树莓派PICO问题一
  17. 【免费分享】2020-2021年广告营销类行业报告集合(149份)
  18. Multisim仿真-仪表放大器仿真电路
  19. 上海亚商投顾: 市场震荡整理 飞机、消费股表现强势
  20. 植物大战僵尸阳光的无限掉落以及掉落冷却基地址寻找详细步骤~包含排除不符合条件的地址的讲解,以及如何观察地址情况等

热门文章

  1. 联合利华vs乡镇企业
  2. 即时通讯开发之开源工程WebRTC原理
  3. php agrs zf2,添加ZF2_PATH environment variable 环境变量
  4. 关爱女性健康的移动产品竞品分析报告
  5. Golang publish module
  6. Windows热键注册原理
  7. 008-2018-09-12 文件操作
  8. Python获取外网ip
  9. 微信小程序实现带参数的分享功能
  10. 海洋cms常见问题有哪些?