html-рендерер в Golang без стороннего импорта

Я сам обучаюсь го, и я начал экспериментировать с использованием го в качестве бэкенда.

У меня есть следующий код, который отображает HTML-страницы, но я ищу решение, которое не полагается на сторонний импорт, чтобы лучше понять, что происходит и что необходимо сделать.

package main

import (
    "log"
    "net/http"

    "github.com/thedevsaddam/renderer"
)

var rnd *renderer.Render

func init() {
    opts := renderer.Options{
        ParseGlobPattern: "./pages/*.gohtml",
    }
    rnd = renderer.New(opts)
}

func main() {
    mux := http.NewServeMux()
    mux.HandleFunc("/", home)
    mux.HandleFunc("/about", about)
    port := ":9000"
    log.Println("Listening on port ", port)
    http.ListenAndServe(port, mux)
}

func home(w http.ResponseWriter, r *http.Request) {
    rnd.HTML(w, http.StatusOK, "home", nil)
}

func about(w http.ResponseWriter, r *http.Request) {
    rnd.HTML(w, http.StatusOK, "about", nil)
}

файлы GOHTML:

{{ define "home"}}
<!DOCTYPE html>
<html>
<head>
  <title>Home</title>
</head>
<body>
  <h1>HOME</h1>
  <ul>
    <li><a href="/">Home</a></li>
    <li><a href="/about">About</a></li>
  </ul>
</body>
</html>
{{ end }}
{{ define "about" }}
<!DOCTYPE html>
<html>
<head>
  <title>About</title>
</head>
<body>
  <h1>ABOUT</h1>
  <ul>
    <li><a href="/">Home</a></li>
    <li><a href="/about">About</a></li>
  </ul>
</body>
</html>
{{ end }}

Любая помощь приветствуется

1 ответ

Решение

Используйте пакет html / template из стандартной библиотеки. Рендерер, который вы используете, представляет собой лишь тонкую обертку.

Другие вопросы по тегам