html

package
v0.62.1 Latest Latest
Warning

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

Go to latest
Published: Jan 8, 2023 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

Package html 提供输出 HTML 内容的解码函数

	srv := NewServer()
	tpl := template.ParseFiles(...)
	srv.Mimetypes().Add("text/html", html.Marshal, html.Unmarshal)

	func handle(ctx *web.Context) Responser {
         obj := &struct{
             HTMLName struct{} `html:"Object"`
             Data string
         }{}
	    return Object(200, obj, nil)
	}

Index

Constants

View Source
const Mimetype = "text/html"

Variables

This section is empty.

Functions

func InstallView added in v0.59.1

func InstallView(s *server.Server, dir bool, fsys fs.FS, glob string)

InstallView 返回本地化的模板

适合所有不同的本地化内容都在同一个模板中的, 通过翻译函数 t 输出各种语言的内容,模板中不能存在本地化相关的内容。

提供了以下两个方法:

  • t 根据当前的语言(server.Context.LanguageTag)对参数进行翻译;
  • tt 将内容翻译成指定语言,语言 ID 由第一个参数指定;

fsys 表示模板目录,如果为空则会采用 s 作为默认值;

通过此方法安装之后,可以正常处理用户提交的对象:

  • string 直接输出字符串;
  • []byte 直接输出内容;
  • Marshaler 将 [Marshaler.MarshalHTML] 返回内容作为输出内容;
  • 其它结构体,尝试读取 HTMLName 字段的 html struct tag 值作为模板名称进行查找;

dir 表示是否以目录的形式组织本地化代码;

func Marshal

func Marshal(ctx *server.Context, v any) ([]byte, error)

Marshal 针对 HTML 内容的解码实现

参数 v 可以是以下几种可能:

  • string 或是 []byte 将内容作为 HTML 内容直接输出;
  • 其它普通对象,将获取对象的 HTMLName 的 struct tag,若不存在则直接采用类型名作为模板名;
  • 其它情况下则是返回 server.ErrUnsupported

func Unmarshal

func Unmarshal([]byte, any) error

Types

type Marshaler

type Marshaler interface {
	// MarshalHTML 将对象转换成可用于模板的对象结构
	//
	// name 表示模板名称;
	// data 表示传递给该模板的数据;
	MarshalHTML() (name string, data any)
}

Marshaler 自定义 HTML 输出需要实现的接口

当前接口仅适用于由 InstallView 和 [InstallLocaleView] 管理的模板。

Jump to

Keyboard shortcuts

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