Skip to content

znbang/echo-layout

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This package is a layout template engine for echo.

Installation

go get -u github.com/znbang/echo-layout

Example

views/layouts/main.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{{block "title" .}}Layout{{end}}</title>
</head>
<body>
{{block "content" .}}
This is layout.html.
{{end}}
</body>
</html>

views/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{{define "title"}}Index{{end}}</title>
</head>
<body>
{{define "content"}}
This is index.html.
{{end}}
</body>
</html>

views/partial.html

<body>
This is partial.html.
</body>

main.go

package main

import (
	"embed"
	"net/http"

	"github.com/labstack/echo/v4"
	"github.com/znbang/echo-layout/html"
)

//go:embed views/*
var viewsFS embed.FS

func main() {
	e := echo.New()
	e.Renderer = html.NewFileSystem(viewsFS, "views", "layouts/main", ".html")
	// with layout
	e.GET("/", func(c echo.Context) error {
		return c.Render(http.StatusOK, "index", echo.Map{})
	})
	// without layout
	e.GET("/partial", func(c echo.Context) error {
		return c.Render(http.StatusOK, "partial.html", echo.Map{})
	})
	e.Logger.Fatal(e.Start(":9000"))
}

Generated HTML

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Index</title>
</head>
<body>

This is index.html.

</body>
</html>

partial.html

<body>
this is partial.html.
</body>

About

A layout template engine for echo.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages