项目入口配置
package main
import (
"net/http";
"log";
"encoding/json";
"text/template";
"os";
)
type IndexData struct {
// 定义结构体的字段
// 字段名首字母必须大写,即Title是供访问的字段名,title是结构体的字段名,即返回给前端的字段名
Title string `json:"title"`
Desc string `json:"desc"`
}
// 定义一个处理函数,处理请求
func Index(w http.ResponseWriter, r *http.Request) {
// 定义向客户端返回数据类型
w.Header().Set("Content-Type", "application/json")
var data IndexData
data.Title = "你好,青年人!"
data.Desc = "记得朝气蓬勃,努力奋斗!"
jsonStr, _ := json.Marshal(data)
w.Write(jsonStr)
}
// 定义一个处理html页面的函数
func IndexHtml(w http.ResponseWriter, r *http.Request) {
var data IndexData
data.Title = "你好,青年人!"
data.Desc = "记得朝气蓬勃,努力奋斗!"
// 定义html模板
t := template.New("index.html")
// 解析模板文件
// 拿到文件的路径,并解析模板文件
path, _ := os.Getwd()
t,_ = t.ParseFiles(path + "/template/index.html")
t.Execute(w, data)
}
func main() {
// 程序入口,一个项目只能有一个入口,即一个main函数
// Web程序,http协议,ip,port
// 定义server的结构体
server := http.Server{
Addr: "127.0.0.1:8080",
}
// 设置路由
http.HandleFunc("/", Index)
http.HandleFunc("/index", IndexHtml)
// 启动server
if err := server.ListenAndServe(); err!= nil{
log.Println(err)
}
}
启动项目命令
go run main.go
前端template
<!DOCTYPE html>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>你好,Go语言</h1>
<p>拒绝拖延症,从你我做起!</p>
{{.Title}}
<br />
{{.Desc}}
</body>
</html>
页面效果
