【Go实战基础】程序里面数据是如何显示到浏览器当中的
目录
一、简介
二、模版库
三、菜鸟实战
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实战基础】程序里面数据是如何显示到浏览器当中的相关推荐
- 微信小程序绑定数据页面不显示并且页面没有报错
<!--index.wxml--> <view> {{ message }} </view> js Page({ data: { message: 'Hello M ...
- R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(配置数据点抖动显示jitter)实战
R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(配置数据点抖动显示jitter)实战 目录 R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(配置 ...
- 微信小程序开发数据缓存基础知识辨析以及运用实例
微信小程序开发数据缓存基础知识辨析以及运用实例 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的 ...
- matlab软件及基础实验第8单元,《MATLAB统计分析与应用:40个案例分析》程序与数据(内含彩蛋)...
[实例简介]Matlab教材及随书光盘,超实用的好书,强烈推荐! MATLAB统计分析与应用 40个案例分析.pdf <MATLAB统计分析与应用:40个案例分析>程序与数据.rar 第1 ...
- Nginx实战基础篇六 通过源码包编译安装部署LNMP搭建Discuz论坛
Nginx实战基础篇六 通过源码包编译安装部署LNMP搭建Discuz论坛 版权声明: 本文遵循"署名非商业性使用相同方式共享 2.5 中国大陆"协议 您可以自由复制.发行.展览. ...
- 大数据基础——Hadoop大数据平台搭建
文章目录 前言 Hadoop大数据平台搭建 一.Hadoop原理和功能介绍 二.Hadoop安装部署 三.Hadoop常用操作 总结 前言 分布式机器学习为什么需求大数据呢?随着海量用户数据的积累,单 ...
- 零基础转行大数据可行吗?大数据开发需要什么基础呢?
IT行业发展速度快,市场需求大,而且,程序员薪酬高.福利待遇高,成为很多从业者向往的职业,当然,也刺激了很多非计算机专业的从业者进入该领域.转行进入IT行业在最近的几年一直是个热门,那么对于0基础的求 ...
- 推荐零基础学习大数据的10本经典图书
学习大数据并不是一蹴而就的事情,及时工作多年的开发工程师都需要不断的补充新鲜的知识内容.目前学习大数据知识可以通过视频和图书两种方式学习,视频的优势在于能够将老师的个人开发经验传授给学习者,而图书的优 ...
- Python爬虫入门实战之猫眼电影数据抓取(理论篇)
前言 本文可能篇幅较长,但是绝对干货满满,提供了大量的学习资源和途径.达到让读者独立自主的编写基础网络爬虫的目标,这也是本文的主旨,输出有价值能够真正帮助到读者的知识,即授人以鱼不如授人以渔,让我们直 ...
- Python实战小程序——Excel操作
Python中的Excel操作 python中的xlrd和xlwt两个模块可以对Excel进行各项操作. 第一步:安装模块的方法: 1.下载一个ez_setup.p ...
最新文章
- 逆战服务器在哪个文件夹,逆战的背景音乐文件夹放在哪?别说在服务器上面!...
- linux入门(三)常见Linux指令及其用法
- 【新书】分布式强化学习
- 通过Blazor使用C#开发SPA单页面应用程序(2)
- JSP过滤器Filter配置过滤类型汇总
- 微信小程序 - 锚点功能的实现
- PHP三年15K,程序员月薪15K相亲三年才成功,被拒理由:这个薪资提鞋都嫌弃
- 基于shell 脚本处理文本数据流程
- Python学习笔记之 循环,列表生成式,生成器,迭代器
- Java-Android 之出滚动条和卷轴页面
- 【WebGIS毕业设计】(一)前言、开题与参考文献
- 软件工程总结笔记——软件详细设计(五)
- 计算机术语横幅迎新,内蒙古师范大学用代码写迎新条幅,还有哪些搞笑的迎新标语?...
- 微信小程序地区选择,单级学校选择和省,市,区选择
- leetcode 1419 数青蛙
- 树莓派PICO问题一
- 【免费分享】2020-2021年广告营销类行业报告集合(149份)
- Multisim仿真-仪表放大器仿真电路
- 上海亚商投顾: 市场震荡整理 飞机、消费股表现强势
- 植物大战僵尸阳光的无限掉落以及掉落冷却基地址寻找详细步骤~包含排除不符合条件的地址的讲解,以及如何观察地址情况等