1. package main
    2. import (
    3. "fmt"
    4. "html/template"
    5. "time"
    6. "github.com/gin-gonic/gin"
    7. )
    8. //时间戳转换成日期
    9. func UnixToTime(timestamp int) string {
    10. fmt.Println(timestamp)
    11. t := time.Unix(int64(timestamp), 0)
    12. return t.Format("2006-01-02 15:04:05")
    13. }
    14. func main() {
    15. // 创建一个默认的路由引擎
    16. r := gin.Default()
    17. //自定义模板函数 注意要把这个函数放在加载模板前
    18. r.SetFuncMap(template.FuncMap{
    19. "UnixToTime": UnixToTime,
    20. })
    21. //加载模板 放在配置路由前面
    22. r.LoadHTMLGlob("templates/**/*")
    23. //配置静态web目录 第一个参数表示路由, 第二个参数表示映射的目录
    24. r.Static("/static", "./static")
    25. defaultRouters := r.Group("/")
    26. {
    27. defaultRouters.GET("/", func(c *gin.Context) {
    28. c.String(200, "首页")
    29. })
    30. defaultRouters.GET("/news", func(c *gin.Context) {
    31. c.String(200, "新闻")
    32. })
    33. }
    34. apiRouters := r.Group("/api")
    35. {
    36. apiRouters.GET("/", func(c *gin.Context) {
    37. c.String(200, "我是一个api接口")
    38. })
    39. apiRouters.GET("/userlist", func(c *gin.Context) {
    40. c.String(200, "我是一个api接口-userlist")
    41. })
    42. apiRouters.GET("/plist", func(c *gin.Context) {
    43. c.String(200, "我是一个api接口-plist")
    44. })
    45. }
    46. adminRouters := r.Group("/admin")
    47. {
    48. adminRouters.GET("/", func(c *gin.Context) {
    49. c.String(200, "后台首页")
    50. })
    51. adminRouters.GET("/user", func(c *gin.Context) {
    52. c.String(200, "用户列表")
    53. })
    54. adminRouters.GET("/article", func(c *gin.Context) {
    55. c.String(200, "新闻列表")
    56. })
    57. }
    58. r.Run()
    59. }
    1. {{ define "admin/index.html" }}
    2. <!DOCTYPE html>
    3. <html lang="en">
    4. <head>
    5. <meta charset="UTF-8">
    6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    7. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    8. <title>Document</title>
    9. </head>
    10. <body>
    11. <h2>这是后台首页</h2>
    12. </body>
    13. </html>
    14. {{ end }}
    1. {{ define "admin/news.html" }}
    2. <!DOCTYPE html>
    3. <html lang="en">
    4. <head>
    5. <meta charset="UTF-8">
    6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    7. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    8. <title>Document</title>
    9. </head>
    10. <body>
    11. <h2>后台新闻页面</h2>
    12. </body>
    13. </html>
    14. {{ end }}
    1. <!-- 相当于给模板定义一个名字 define end 成对出现-->
    2. {{ define "default/index.html" }}
    3. <!DOCTYPE html>
    4. <html lang="en">
    5. <head>
    6. <meta charset="UTF-8">
    7. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    8. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    9. <title>Document</title>
    10. <link rel="stylesheet" href="/static/css/base.css">
    11. </head>
    12. <body>
    13. <h1>Post演示</h1>
    14. </body>
    15. </html>
    16. {{ end }}
    1. <!-- 相当于给模板定义一个名字 define end 成对出现-->
    2. {{ define "default/user.html" }}
    3. <!DOCTYPE html>
    4. <html lang="en">
    5. <head>
    6. <meta charset="UTF-8">
    7. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    8. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    9. <title>Document</title>
    10. <link rel="stylesheet" href="static/css/base.css">
    11. </head>
    12. <body>
    13. <form action="/doAddUser2" method="post">
    14. 用户名:<input type="text" name="username" /> <br><br>
    15. 密码:<input type="password" name="password" /> <br><br>
    16. <input type="submit" value="提交">
    17. </form>
    18. </body>
    19. </html>
    20. {{end}}
    1. <!-- 相当于给模板定义一个名字 define end 成对出现-->
    2. {{ define "public/page_footer.html" }}
    3. <h1>
    4. 我是一个公共的底部
    5. </h1>
    6. {{end}}
    1. <!-- 相当于给模板定义一个名字 define end 成对出现-->
    2. {{ define "public/page_header.html" }}
    3. <h1>
    4. 我是一个公共的标题---{{.title}}
    5. </h1>
    6. {{end}}

    1. package main
    2. import (
    3. "fmt"
    4. "gindemo06/routers"
    5. "html/template"
    6. "time"
    7. "github.com/gin-gonic/gin"
    8. )
    9. //时间戳转换成日期
    10. func UnixToTime(timestamp int) string {
    11. fmt.Println(timestamp)
    12. t := time.Unix(int64(timestamp), 0)
    13. return t.Format("2006-01-02 15:04:05")
    14. }
    15. func main() {
    16. // 创建一个默认的路由引擎
    17. r := gin.Default()
    18. //自定义模板函数 注意要把这个函数放在加载模板前
    19. r.SetFuncMap(template.FuncMap{
    20. "UnixToTime": UnixToTime,
    21. })
    22. //加载模板 放在配置路由前面
    23. r.LoadHTMLGlob("templates/**/*")
    24. //配置静态web目录 第一个参数表示路由, 第二个参数表示映射的目录
    25. r.Static("/static", "./static")
    26. routers.AdminRoutersInit(r)
    27. routers.ApiRoutersInit(r)
    28. routers.DefaultRoutersInit(r)
    29. r.Run()
    30. }
    1. package routers
    2. import "github.com/gin-gonic/gin"
    3. func AdminRoutersInit(r *gin.Engine) {
    4. adminRouters := r.Group("/admin")
    5. {
    6. adminRouters.GET("/", func(c *gin.Context) {
    7. c.String(200, "后台首页")
    8. })
    9. adminRouters.GET("/user", func(c *gin.Context) {
    10. c.String(200, "用户列表")
    11. })
    12. adminRouters.GET("/article", func(c *gin.Context) {
    13. c.String(200, "新闻列表")
    14. })
    15. }
    16. }
    1. package routers
    2. import "github.com/gin-gonic/gin"
    3. func ApiRoutersInit(r *gin.Engine) {
    4. apiRouters := r.Group("/api")
    5. {
    6. apiRouters.GET("/", func(c *gin.Context) {
    7. c.String(200, "我是一个api接口")
    8. })
    9. apiRouters.GET("/userlist", func(c *gin.Context) {
    10. c.String(200, "我是一个api接口-userlist")
    11. })
    12. apiRouters.GET("/plist", func(c *gin.Context) {
    13. c.String(200, "我是一个api接口-plist")
    14. })
    15. }
    16. }
    1. package routers
    2. import (
    3. "net/http"
    4. "github.com/gin-gonic/gin"
    5. )
    6. func DefaultRoutersInit(r *gin.Engine) {
    7. defaultRouters := r.Group("/")
    8. {
    9. defaultRouters.GET("/", func(c *gin.Context) {
    10. c.HTML(http.StatusOK, "default/index.html", gin.H{
    11. "msg": "我是一个msg",
    12. })
    13. })
    14. defaultRouters.GET("/news", func(c *gin.Context) {
    15. c.String(200, "新闻")
    16. })
    17. }
    18. }
    1. {{ define "admin/index.html" }}
    2. <!DOCTYPE html>
    3. <html lang="en">
    4. <head>
    5. <meta charset="UTF-8">
    6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    7. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    8. <title>Document</title>
    9. </head>
    10. <body>
    11. <h2>这是后台首页</h2>
    12. </body>
    13. </html>
    14. {{ end }}
    1. {{ define "admin/news.html" }}
    2. <!DOCTYPE html>
    3. <html lang="en">
    4. <head>
    5. <meta charset="UTF-8">
    6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    7. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    8. <title>Document</title>
    9. </head>
    10. <body>
    11. <h2>后台新闻页面</h2>
    12. </body>
    13. </html>
    14. {{ end }}
    1. <!-- 相当于给模板定义一个名字 define end 成对出现-->
    2. {{ define "default/index.html" }}
    3. <!DOCTYPE html>
    4. <html lang="en">
    5. <head>
    6. <meta charset="UTF-8">
    7. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    8. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    9. <title>Document</title>
    10. <link rel="stylesheet" href="/static/css/base.css">
    11. </head>
    12. <body>
    13. <h1>我是一个首页</h1>
    14. <br>
    15. {{.msg}}
    16. </body>
    17. </html>
    18. {{ end }}
    1. <!-- 相当于给模板定义一个名字 define end 成对出现-->
    2. {{ define "default/user.html" }}
    3. <!DOCTYPE html>
    4. <html lang="en">
    5. <head>
    6. <meta charset="UTF-8">
    7. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    8. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    9. <title>Document</title>
    10. <link rel="stylesheet" href="static/css/base.css">
    11. </head>
    12. <body>
    13. <form action="/doAddUser2" method="post">
    14. 用户名:<input type="text" name="username" /> <br><br>
    15. 密码:<input type="password" name="password" /> <br><br>
    16. <input type="submit" value="提交">
    17. </form>
    18. </body>
    19. </html>
    20. {{end}}
    1. <!-- 相当于给模板定义一个名字 define end 成对出现-->
    2. {{ define "public/page_footer.html" }}
    3. <h1>
    4. 我是一个公共的底部
    5. </h1>
    6. {{end}}
    1. <!-- 相当于给模板定义一个名字 define end 成对出现-->
    2. {{ define "public/page_header.html" }}
    3. <h1>
    4. 我是一个公共的标题---{{.title}}
    5. </h1>
    6. {{end}}

    源码.7z