html

package
v0.99.0 Latest Latest
Warning

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

Go to latest
Published: Nov 21, 2024 License: MIT Imports: 12 Imported by: 1

Documentation

Overview

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

srv := server.New("", "", &server.Options{
	Codec: web.New().AddMimetype("text/html", html.Marshal, html.Unmarshal, "")
})

html.Init(...)
html.Install(...)

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

预定义的模板

框架本身提供了一些数据类型的定义,比如 web.Problem, 用户需要提供由 web.Problem.MarshalHTML 返回的模板定义。 如果用户还使用了 [server.RenderResponse],那么也需要提供对应的模板定义。

Index

Constants

View Source
const Mimetype = header.HTML

Variables

This section is empty.

Functions

func Init added in v0.99.0

func Init(s web.Server, localized map[language.Tag]string)

Init 初始化 html 模板系统

localized 模板的本地化目录列表。键值为目录名称,键名为该目录对应的本地化 ID。 将目录映射到 language.Und,表示该目录作为默认模板使用。 如果 localized 为空,则表示不按目录进行区分,将加载所有内容至一个模板实例中。

func Install added in v0.99.0

func Install(s web.Server, funcs template.FuncMap, glob string, fsys ...fs.FS)

Install 安装模板

提供了以下两个方法:

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

fsys 表示模板目录。该目录下应该包含 Init 中 localized 参数指定的所有目录, 否则会 panic。

通过此函数安装之后,可以正常输出以下内容:

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

NOTE: 可以多次调用,相同名称的模板会覆盖。

func Marshal added in v0.87.0

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

Marshal 针对 HTML 内容的解码实现

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

  • string 或是 []byte 将内容作为 HTML 内容直接输出;
  • 实现了 Marshaler 接口,则按 [Marshaler.MarshalHTML] 返回的查找模板名称;
  • 其它普通对象,将获取对象的 XMLName 的 struct tag,若不存在则直接采用类型名作为模板名;
  • 其它情况下则是返回 mimetype.ErrUnsupported

func Unmarshal added in v0.87.0

func Unmarshal(io.Reader, any) error

Types

type Marshaler added in v0.87.0

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