框架template初识

2024-09-08 07:04
文章标签 初识 框架 template

本文主要是介绍框架template初识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

框架初识

框架就是一个别人帮我们搭好的舞台,造好了很多现成的工具供我们使用,让开发过程更快速、简洁。

Gin框架介绍

Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架。
Gin是一个用Go语言编写的web框架。它是一个类似于martini 但拥有更好性能的API框架, 由于使用了 httprouter,速度提高了近40倍。

第一个Gin示例

package mainimport "github.com/gin-gonic/gin"func sayHello(c *gin.Context) {c.JSON(200, gin.H{"message": "Hello golang!",})
}func main() {// 创建一个默认的路由引擎r := gin.Default()// GET:请求方式;/hello:请求的路径// 指定客户端以GET方法请求访问/hello路径时,会执行后面的sayHello函数r.GET("/hello", sayHello)// 启动HTTP服务,默认在0.0.0.0:8080启动服务r.Run(":9090")
}

将上面的代码保存并编译执行,使用浏览器打开127.0.0.1:8080/hello 就能看到一串JSON字符串:
在这里插入图片描述

RESTful API

REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”或“表现层状态转化”。

REST的含义

REST的含义就是客户端与Web服务器之间进行交互的时候,使用HTTP协议中的4个请求方法代表不同的动作

  • GET用来获取资源
  • POST用来新建资源
  • PUT用来更新资源
  • DELETE用来删除资源

只要API程序遵循了REST风格,那就可以称其为RESTful API。目前在前后端分离的架构中,前后端基本都是通过RESTful API来进行交互。

【案例】图书管理系统

对一本书进行查询、创建、更新和删除等操作:
在这里插入图片描述
同样的需求按照RESTful API设计如下:
在这里插入图片描述
Gin框架支持开发RESTful API的开发:

func main() {r := gin.Default()// http.StatusOK == 200r.GET("/book", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "GET",})})r.POST("/book", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "POST",})})r.PUT("/book", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "PUT",})})r.DELETE("/book", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "DELETE",})})// 启动服务r.Run(":9090")
}

开发RESTful API的时候我们通常使用 Postman 来作为客户端的测试工具。
在这里插入图片描述

Go语言标准库之http/template

html/template包实现了数据驱动的模板,用于生成可防止代码注入的安全的HTML内容。它提供了和text/template包相同的接口,Go语言中输出HTML的场景都应使用html/template这个包。

模板与渲染

在一些前后端不分离的Web架构中,通常需要在后端将一些数据渲染到HTML文档中,从而实现动态的网页(网页的布局和样式大致一样,但展示的内容并不一样)效果。

  • 模板:事先定义好的HTML文档文件。
  • 模板渲染的作用机制:文本替换操作 - 使用相应的数据去替换HTML文档中事先准备好的标记。

Go语言的模板引擎

Go语言内置了文本模板引擎 text/template和用于HTML文档的html/template

模板引擎的作用机制

  1. 模板文件通常定义为 .tmpl.tpl 为后缀(也可以使用其他的后缀),必须使用UTF8编码。
  2. 模板文件中使用{{和}}包裹和标识需要传入的数据。
  3. 传给模板这样的数据就可以通过点号.来访问,如果数据是复杂类型的数据,可以通过{ { .FieldName }}来访问它的字段。
  4. {{}}包裹的内容外,其他内容均不做修改原样输出。

模板引擎的使用

定义模板文件

定义模板文件时需要按照相关语法规则去编写。

解析模板文件

上面定义好了模板文件之后,可以使用下面的常用方法去解析模板文件,得到模板对象:

// 解析模板字符串
func (t *Template) Parse(src string) (*Template, error)
// 解析模板文件
func ParseFiles(filenames ...string) (*Template, error)
// 解析很多个模板
func ParseGlob(pattern string) (*Template, error)

当然,也可以使用 func New(name string) *Template 函数创建一个名为name的模板,然后对其调用上面的方法去解析模板字符串或模板文件。

模板渲染

渲染模板简单来说就是使用数据去填充模板,当然实际上可能会复杂很多。

func (t *Template) Execute(wr io.Writer, data interface{}) error
func (t *Template) ExecuteTemplate(wr io.Writer, name string, data interface{}) error

基本示例

定义模板文件

按照Go模板语法定义一个hello.tmpl的模板文件,内容如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head><title>Hello</title>
</head>
<body>
<p>Hello {{ . }}</p>
</body>
</html>

解析和渲染模板文件

创建一个main.go文件,在其中写下HTTP server端代码如下:

package mainimport ("fmt""html/template""net/http"
)func sayHello(w http.ResponseWriter, r *http.Request) {// 2. 解析模板t, err := template.ParseFiles("./hello.tmpl")if err != nil {fmt.Printf("Parse template failed, err:%v\n", err)return}// 3. 渲染模板name := "小王子"err = t.Execute(w, name)if err != nil {fmt.Printf("render template failed, err:%v\n", err)return}
}func main() {http.HandleFunc("/", sayHello)err := http.ListenAndServe(":9000", nil)if err != nil {fmt.Printf("HTTP server start failed, err:%v\n", err)return}

效果

将上面的main.go文件编译执行,然后使用浏览器访问 http://127.0.0.1:9000/:

在这里插入图片描述

这篇关于框架template初识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1147452

相关文章

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地

Linux操作系统 初识

在认识操作系统之前,我们首先来了解一下计算机的发展: 计算机的发展 世界上第一台计算机名叫埃尼阿克,诞生在1945年2月14日,用于军事用途。 后来因为计算机的优势和潜力巨大,计算机开始飞速发展,并产生了一个当时一直有效的定律:摩尔定律--当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。 那么相应的,计算机就会变得越来越快,越来越小型化。

模版方法模式template method

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/template-method 超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 上层接口有默认实现的方法和子类需要自己实现的方法

ZooKeeper 中的 Curator 框架解析

Apache ZooKeeper 是一个为分布式应用提供一致性服务的软件。它提供了诸如配置管理、分布式同步、组服务等功能。在使用 ZooKeeper 时,Curator 是一个非常流行的客户端库,它简化了 ZooKeeper 的使用,提供了高级的抽象和丰富的工具。本文将详细介绍 Curator 框架,包括它的设计哲学、核心组件以及如何使用 Curator 来简化 ZooKeeper 的操作。 1

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

Spring Framework系统框架

序号表示的是学习顺序 IoC(控制反转)/DI(依赖注入): ioc:思想上是控制反转,spring提供了一个容器,称为IOC容器,用它来充当IOC思想中的外部。 我的理解就是spring把这些对象集中管理,放在容器中,这个容器就叫Ioc这些对象统称为Bean 用对象的时候不用new,直接外部提供(bean) 当外部的对象有关系的时候,IOC给它俩绑好(DI) DI和IO

Sentinel 高可用流量管理框架

Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。 Sentinel 具有以下特性: 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应

利用Django框架快速构建Web应用:从零到上线

随着互联网的发展,Web应用的需求日益增长,而Django作为一个高级的Python Web框架,以其强大的功能和灵活的架构,成为了众多开发者的选择。本文将指导你如何从零开始使用Django框架构建一个简单的Web应用,并将其部署到线上,让世界看到你的作品。 Django简介 Django是由Adrian Holovaty和Simon Willison于2005年开发的一个开源框架,旨在简