html

command
v0.0.0-...-c9f4763 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 13, 2016 License: Apache-2.0 Imports: 3 Imported by: 0

README

HTML Templates

Serving HTML is an important job for some web applications. Go has one of my favorite templating languages to date. Not for its features, but for its simplicity and out of the box security. Rendering HTML templates is almost as easy as rendering JSON using the 'html/template' package from the standard library. Here is what the source code for rendering HTML templates looks like:

package main

import (
	"html/template"
	"net/http"
	"path"
)

type book struct {
	Title  string
	Author string
}

func main() {
	http.HandleFunc("/", showBooks)
	http.ListenAndServe(":8080", nil)
}

func showBooks(w http.ResponseWriter, r *http.Request) {
	b := book{"Building Web Apps with Go", "Jeremy Saenz"}

	fp := path.Join("templates", "index.html")
	tmpl, err := template.ParseFiles(fp)
	if err != nil {
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}

	if err := tmpl.Execute(w, b); err != nil {
		http.Error(w, err.Error(), http.StatusInternalServerError)
	}
}

This is the following template we will be using. It should be placed in a templates/index.html file in the directory your program is run from:

<html>
  <h1>{{ .Title }}</h1>
  <h3>by {{ .Author }}</h3>
</html>

Exercises

  1. Look through the docs for text/template and html/template package. Play with the templating language a bit to get a feel for its goals, strengths, and weaknesses.
  2. In the example we parse the files on every request, which can be a lot of performance overhead. Experiment with parsing the files at the beginning of your program and executing them in your http.Handler (hint: make use of the Copy() method on html.Template).
  3. Experiment with parsing and using multiple templates.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL