view

package module
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Aug 16, 2018 License: MIT Imports: 10 Imported by: 0

README

View renderer

GoDoc Build Status Coverage Status Go Report Card

A simple view renderer based on the golang html/template package, but much simpler to use. Support layout rendering, including templates.

中文说明

Features

  • simple to use
  • support layout render.
    • eg {{ include "header" }} {{ yield }} {{ include "footer" }}
  • support include other templates. eg {{ include "other" }}
  • built-in some helper methods row, lower, upper, join ...

Godoc

Usage

package main

import (
	"github.com/gookit/view"
	"fmt"
	"bytes"
)

func main()  {
	// equals to call: view.NewRenderer() + r.MustInitialize()
	r := view.NewInitialized(func(r *view.Renderer) {
		// setting default layout
		r.Layout = "layout" // equals to "layout.tpl"
		// templates dir. will auto load on init.
		r.ViewsDir = "testdata"
	})

	// fmt.Println(r.TemplateNames(true))

	bf := new(bytes.Buffer)

	// render template string
	r.String(bf, `hello {{.}}`, "tom")
	fmt.Print(bf.String()) // hello tom

	// render template without layout
	r.Partial(bf, "home", "tom")
	bf.Reset()

	// render with default layout
	r.Render(bf, "home", "tom")
	bf.Reset()

	// render with custom layout
	r.Render(bf, "home", "tom", "site/layout")
	bf.Reset()
	
	// load named template by string
	r.LoadString("my-page", "welcome {{.}}")
	// now, you can use "my-page" as an template name
	r.Partial(bf, "my-page", "tom") // welcome tom
	bf.Reset()
	
	// more ways for load templates
	r.LoadByGlob("some/path/*", "some/path")
	r.LoadFiles("path/file1.tpl", "path/file2.tpl")
}

more API please GoDoc

Options

// ViewsDir the default views directory
ViewsDir string
// Layout template name
Layout string
// Delims define for template
Delims TplDelims
// ExtNames allowed template extensions. eg {"tpl", "html"}
ExtNames []string
// FuncMap func map for template
FuncMap template.FuncMap
// DisableLayout disable layout. default is False
DisableLayout bool
// AutoSearchFile auto search template file, when not found on compiled templates. default is False
AutoSearchFile bool
Apply options
// method 1
r := NewRenderer()
r.Layout = "layouts/default"
// ... ...
r.MustInitialize()

// method 2
r := NewRenderer(func (r *Renderer) {
	r.Layout = "layouts/default"
	// ... ...
})
r.MustInitialize()

// method 3
r := NewInitialized(func (r *Renderer) {
	r.Layout = "layouts/default" 
	// ... ...
})

Reference

License

MIT

Documentation

Overview

Example
// equals to call: view.NewRenderer() + r.MustInitialize()
r := NewInitialized(func(r *Renderer) {
	// setting default layout
	r.Layout = "layout" // equals to "layout.tpl"
	// templates dir. will auto load on init.
	r.ViewsDir = "testdata"
})

// fmt.Println(r.TemplateNames(true))

bf := new(bytes.Buffer)

// render template string
r.String(bf, `hello {{.}}`, "tom")
fmt.Print(bf.String()) // hello tom

// render template without layout
r.Partial(bf, "home", "tom")
bf.Reset()

// render with default layout
r.Render(bf, "home", "tom")
bf.Reset()

// render with custom layout
r.Render(bf, "home", "tom", "site/layout")
bf.Reset()

// load named template by string
r.LoadString("my-page", "welcome {{.}}")
// now, you can use "my-page" as an template name
r.Partial(bf, "my-page", "tom") // welcome tom
bf.Reset()

// more ways for load templates
r.LoadByGlob("some/path/*", "some/path")
r.LoadFiles("path/file1.tpl", "path/file2.tpl")

Index

Examples

Constants

View Source
const DefaultExt = ".tpl"

DefaultExt name

Variables

This section is empty.

Functions

This section is empty.

Types

type M

type M map[string]interface{}

M a short type for map[string]interface{}

type Renderer

type Renderer struct {

	// Debug setting
	Debug bool
	// ViewsDir the default views directory
	ViewsDir string
	// Layout template name
	Layout string
	// Delims define for template
	Delims TplDelims
	// ExtNames allowed template extensions. eg {"tpl", "html"}
	ExtNames []string
	// FuncMap func map for template
	FuncMap template.FuncMap
	// DisableLayout disable layout. default is False
	DisableLayout bool
	// AutoSearchFile TODO)auto search template file, when not found on compiled templates. default is False
	AutoSearchFile bool
	// contains filtered or unexported fields
}

Renderer definition

func NewInitialized

func NewInitialized(fns ...func(r *Renderer)) *Renderer

NewInitialized create a new and initialized view renderer

func NewRenderer

func NewRenderer(fns ...func(r *Renderer)) *Renderer

NewRenderer create a new view renderer

func (*Renderer) AddFunc

func (r *Renderer) AddFunc(name string, fn interface{})

AddFunc add template func

func (*Renderer) AddFuncMap

func (r *Renderer) AddFuncMap(fm template.FuncMap)

AddFuncMap add template func map

func (*Renderer) Initialize

func (r *Renderer) Initialize() error

Initialize templates in the viewsDir, add do some prepare works. Notice: must call it on after create Renderer

func (*Renderer) IsValidExt

func (r *Renderer) IsValidExt(ext string) bool

IsValidExt check is valid ext name

func (*Renderer) LoadByGlob

func (r *Renderer) LoadByGlob(pattern string, baseDirs ...string)

LoadByGlob load templates by glob usage:

r.LoadByGlob("views/*")
r.LoadByGlob("views/**/*")

func (*Renderer) LoadFiles

func (r *Renderer) LoadFiles(files ...string)

LoadFiles load template files. usage:

r.LoadFiles("path/file1.tpl", "path/file2.tpl")

func (*Renderer) LoadString

func (r *Renderer) LoadString(tplName string, tplString string)

LoadString load named template string. usage:

func (*Renderer) LoadStrings

func (r *Renderer) LoadStrings(sMap map[string]string)

LoadStrings load multi named template strings

func (*Renderer) LoadedTemplates

func (r *Renderer) LoadedTemplates() []*template.Template

LoadedTemplates returns loaded template instances, including ROOT itself.

func (*Renderer) MustInitialize

func (r *Renderer) MustInitialize()

MustInitialize compile templates and report error

func (*Renderer) Partial

func (r *Renderer) Partial(w io.Writer, tplName string, data interface{}) error

Partial render partial, will not render layout file

func (*Renderer) Render

func (r *Renderer) Render(w io.Writer, tplName string, data interface{}, layouts ...string) error

Render a template name/file and write to the Writer. usage:

		renderer := view.NewRenderer()
 	// ... ...
		// will apply global layout setting
		renderer.Render(http.ResponseWriter, "user/login", data)
		// apply custom layout file
		renderer.Render(http.ResponseWriter, "user/login", data, "custom-layout")
		// will disable apply layout render
		renderer.Render(http.ResponseWriter, "user/login", data, "")

func (*Renderer) String

func (r *Renderer) String(w io.Writer, tplString string, data interface{}) error

String render a template string

func (*Renderer) Template

func (r *Renderer) Template(name string) *template.Template

Template get template instance by name

func (*Renderer) TemplateFiles

func (r *Renderer) TemplateFiles() map[string]string

TemplateFiles returns loaded template files

func (*Renderer) TemplateNames

func (r *Renderer) TemplateNames(format ...bool) string

TemplateNames returns loaded template names

func (*Renderer) Templates

func (r *Renderer) Templates() *template.Template

Templates returns root template instance

type TplDelims

type TplDelims struct {
	Left  string
	Right string
}

TplDelims for html template

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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