Working with Design Patterns in Go (Golang)

发布于:2024-04-29 ⋅ 阅读:(25) ⋅ 点赞:(0)

introduction:

1、go及GoLand的下载安装:

安装包下载地址为:https://golang.org/dl/

推荐使用国内地址:Go下载 - Go语言中文网 - Golang中文社区

2、Docker

Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像

Docker应用运行在容器中,使用沙箱机制,相互隔离

Setting up a Simple Web Application:

1、What we'll build in WORKING WITH DESIGN PATTERNS this section

学习如何使用设计模式来构建一个简单的 Web 应用程序。设计模式是解决特定问题的可重用解决方案,有助于我们编写更灵活、可维护和可扩展的代码。

2、How web applications work

Web 应用程序的工作原理涉及客户端和服务器之间的交互。客户端发送请求,服务器接收并处理请求,然后返回响应给客户端。这种交互通常是通过 HTTP 协议完成的。

3、Setting up our main application

在设置主应用程序时,我们将初始化基本的 Go 项目结构,并创建一个入口文件来启动我们的 Web 应用程序。

在设置主应用程序时,将初始化基本的 Go 项目结构,并创建一个入口文件来启动我们的 Web 应用程序。

package main

import (
	"fmt"
	"log"
	"net/http"
)

func main() {
	fmt.Println("Starting the web server...")
	http.HandleFunc("/", homeHandler)
	log.Fatal(http.ListenAndServe(":8080", nil))
}

func homeHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "Hello, World!")
}

4、Installing a routing package

安装 Gorilla Mux 路由包。它提供了强大且灵活的路由功能,可以帮助我们定义和处理 URL 路由。

go get -u github.com/gorilla/mux

5、Setting up routes

使用 Gorilla Mux 路由包来定义不同 URL 路由的处理程序。这样,当客户端发送请求时,我们的应用程序可以根据请求的 URL 路径执行相应的操作。

router := mux.NewRouter()
router.HandleFunc("/", homeHandler).Methods("GET")

6、Setting up a simple HTML template

创建一个简单的 HTML 模板,用于呈现我们的网页内容。HTML 模板通常包含网页的结构、样式和基本内容。

<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Simple Web Application</title>
</head>
<body>
    <h1>Welcome to our Simple Web Application</h1>
</body>
</html>

7、Creating a render function

编写一个函数来渲染 HTML 模板并将其发送到客户端。这个函数将负责将数据填充到 HTML 模板中,并将最终的网页内容返回给客户端。

func renderTemplate(w http.ResponseWriter, tmpl string, data interface{}) {
    t, err := template.ParseFiles(tmpl)
    if err != nil {
        log.Println("Error parsing template:", err)
        http.Error(w, "Internal server error", http.StatusInternalServerError)
        return
    }
    err = t.Execute(w, data)
    if err != nil {
        log.Println("Error executing template:", err)
        http.Error(w, "Internal server error", http.StatusInternalServerError)
    }
}

8、Rendering our first page

使用渲染函数来呈现我们的第一个网页。这个页面将是我们应用程序的首页,通过调用渲染函数将 HTML 模板填充并发送给客户端。

func homeHandler(w http.ResponseWriter, r *http.Request) {
    renderTemplate(w, "index.html", nil)
}

9、Adding navigation

为网站添加导航链接,使用户能够浏览不同的页面。导航链接通常放置在网页的顶部或底部,以提供方便的导航功能。

举个例子

10、Creating templates for all site pages

为网站的所有页面创建相应的 HTML 模板。每个页面的模板将包含特定页面的内容和布局。

以setReveiver.html为例