0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Golang入門.3 -html/templateを使う-

Last updated at Posted at 2020-04-16

はじめに

Golang入門.2 -http.Handleの実装を見る-の続きです。また今回から実際のアプリを作っていきます。詳細は決めていませんが、Grammarlyと併用して英語の文章を快適に書くためのエディタを作ろうと思っています。

今回のテーマ

 html/templateを使ってhtmlファイルを返せるようにします。なお、内容はWriting Web Applicationsに準拠します。

概念

 今回はエディタとして必要な入力画面を出せるようにします。基本的にはIndexHandler(前回までのHelloHandler)内でhtmlファイルを読み込み、必要な変数をPage structを通して渡しています。

コード

commit

main.go
package main

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

type IndexHandler struct {}

type Page struct {
	Title string
	Body []byte
}

func loadPage() (*Page, error) {
	return &Page{
		Title: "Blog Editor",
		Body:  []byte(""),
	}, nil
}

func(h *IndexHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	p, _ := loadPage()
	t, _ := template.ParseFiles("template/index.html")
	t.Execute(w, p)
}

func main() {
	index := IndexHandler{}
	server := http.Server{
		Addr: "127.0.0.1:8080",
	}
	http.Handle("/", &index)
	log.Fatal(server.ListenAndServe())
}
template/index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{{printf "%s" .Title}}</title>
</head>
<body>
    <form>
        <div>
            <textarea rows="20" cols="80">
            </textarea>
        </div>
    </form>
</body>
</html>

実行・確認

go run main.go

の後にブラウザ上でlocalhost:8080を確認すると入力画面が出力されています。なお、以降はブラウザ上でGrammarlyが自動で作動することを想定します。例えばChromeの場合は拡張機能としてインストールして設定することができます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?