现在你已经熟悉了Golang和http方法的基础知识,很自然地你会想开始做一个web应用。在这篇博客中,你将详细了解如何从头开始创建一个简单的Web应用。为此,你不必依赖任何Golang网络开发公司。你只需要仔细地按照步骤来做。
初步任务
让我们先在go-workspace中建立一个名为webcreate的目录。为了完成这个任务,在Windows上打开命令提示符(或MAC或Linux上的终端),并输入以下代码。
cd go-workspace
mkdir webcreate
cd webcreate
代码 .
- 当我们输入code .时,VS Code就打开了。
- 在Visual Studio Code上,我们看到webcreate目录已经被创建。之后,我们建立一个名为 "format "的文件夹,并在其中建立一个名为 "format.html "的文件。
- 在webcreate目录内,我们接下来创建了一个名为static的新文件夹。我们还包括另外两个文件:marketing.png(包含一个随机的图片)和 format.css。
- 我们还在webcreate目录的最后包括一个名为main.go的文件。
在main.go文件中编写代码
- 在这里,我们必须在main.go中编写代码。
包main
import (
"fmt"
"html/template"
"net/http"
"time"
)
- 你可以清楚地看到,我们在程序中导入了四个不同的包。它们是fmt、net/http、html/template、time。
type Hi struct {
Sale string
Time string
}
- 接下来,我们创建一个Hi结构,包含两个不同的字符串类型的数据字段。这两个字是销售和时间。在这之后,我们创建了函数main。
func main() {
ola := Hi{"Sale Starts Now", time.Now().Format(time.Stamp)}
template := template.Must(template.ParseFiles("format/format.html"))
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
if sale := r.FormValue("sale"); sale != "" {
ola.Sale = sale
}
if err := template.ExecuteTemplate(w, "format.html", ola); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
})
fmt.Println(http.ListenAndServe(":8000", nil))
}
- 正如你所看到的,我们已经写了很多的代码。现在是时候了解我们在这里到底完成了什么。
- 我们创建了一个变量ola,在这里我们将结构的数据字段设置为初始值。Sale字符串包含 "Sale Starts Now"(现在开始销售)。time.Now()函数使用Format(time.Stamp)显示现在的时间。
- 我们创建另一个名为模板的变量。在这种情况下,你需要注意的是,模板包包括Must函数。在解析过程中,模板的有效性是用这个来检查的。
- 你现在可能会问template.Parsefiles()是用来做什么的。嗯,它负责产生一个新的模板。然后对format/format.html中的几个模板定义进行解析。
- 我们可以使用函数http.Handle,因为我们导入了net/http包。http.Handler被handle所接受。为了访问位于'webcreate'目录内'static'文件夹中的静态文件,利用http.StripPrefix。它将请求的处理程序发送到'static',因为我们指定它为参数。
- FileServer提供的处理程序使用文件系统的根级元数据为HTTP请求服务。你正在从字符串 "static "创建一个http.Dir类型。
- 程序HandleFunc完成了什么?简单地说,它提供了一种机制,让人们注意到处理特定路由的请求的正确方法。为了读和写的目的,利用了函数(w http.ResponseWriter, r*http.Request)。
- 如果sale变量读取FormValue为 "sale",并且sale不是nil,那么结构数据字段ola.Sale现在将接受值 "sale"。
- 在这之后,我们必须理解ExecuteTemplate的作用。在出现错误的情况下,模板应用程序就会终止。它正在考虑来自format.html的模板描述(我们将在后面的程序中检查出来)。
- 由于http包负责提供客户端和服务器的实现,它也使用http.StatusInternalServerError来验证任何错误的状态。
- ListenandServe最初用Handler调用Serve,同时监测TCP网络地址,以处理来自传入连接的请求。
我希望你能够理解每个函数应该做什么。
在HTML文件中编写代码
现在,我们将在HTML文件中输入代码。
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/static/format.css">
<title>Welcome {{.Sale}}</title>
</head>
<body>
<div class="Hello Centre">Last day {{.Sale}}, {{.Time}}</div>
</body>
</html>
- 上面所说的代码是很容易理解的。我们所做的就是描述网页的轮廓或结构。charset属性有助于强调HTML文件的指定字符编码。此外,HTML5标准要求开发者利用UTF-8字符集。
- 语句<link rel="stylesheet".... 表示一个外部源(format.css)被链接到当前的HTML内容(format.html)。文档的屏幕表现将由 "样式表 "决定。
- 实践中的HTML元素应该属于不同的类。为了分离类,我们使用我们将显示最后一天以及销售的时间和价值。
就这样,我们完成了HTML文档。
在CSS文件中编写代码
在这之后,我们进入格式.css源文件,该文件存在于 "静态 "中。我们输入。
body {
min-height: 150%;
background-image: url("/static/marketing.png");
background-blend-mode: overlay;
background-size: cover;
}
.welcome {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
font-size: 2rem;
color:lightpink;
}
.center {
height: 100vh;
display: flex;
justify-content: center;
align-items: center
}
- 上面所写的代码很容易理解。在这里,我们只是描述了网页的表现形式。在body的情况下,我们强调了最小高度、background-image、background-size和background-blend-move。
- 在.welcome的情况下,我们指定font-family、font-size和颜色。
- 对于.center,我们指定了高度、显示、对齐项目和调整内容。这样,我们就结束了编程。
现在,当我们运行代码时,我们在浏览器上输入'localhost:8000',我们就可以看到。

因此,已经写好的代码是完全没有问题的。这就是我们如何创建一个简单的网络应用。如果你已经理解了这里的代码,那么你会发现以后开发复杂的网络应用程序会更容易。