#html #dsl #web #html-templating #web-programming

onhtml

用于编写html的dsl。这并不是一个html模板!它并不完整,但很容易扩展。

3个稳定版本

4.0.2 2022年2月3日
4.0.1 2021年11月25日

#573 in 模板引擎

MIT/Apache

33KB
521

ontology 编写

用于编写html的dsl(领域特定语言)。这绝对不是一个html模板(有很多这样的模板)。这个库并不完整,并且很可能永远不会完整——html非常庞大。

用法

use onhtml::*  ;
fn myhomepage1() ->String  {
	let mut x = Title("a page")  ;
	x += &meta() .name("description") .Content("bla bla")  ;
	x += &Style("some inline css")  ;
	x = Head(&x)  ;
	let mut y = a("nst") .href("nst.com") .Download()  ;
	y += &P("nst")  ;
	x += &Body(&y)  ;
	x += &script("") .type_("module") .Src("/res/main.js")  ;
	x = html(&x) .Lang("en")  ;
	doctype(&x)}
fn myhomepage2() ->String  {
	let mut x = Title("a page")  ;
	x += &meta() .name("description") .Content("bla bla")  ;
	x += &link() .rel("stylesheet") .Href("/mycss.css")  ;
	x = Head(&x)  ;
	let mut y = a("nst") .href("nst.com") .data("a","1") .Download()  ;
	y += &P("nst")  ;
	x += &Body(&y)  ;
	x += &script("") .type_("script") .Src("/res/main.js")  ;
	x = html(&x) .Lang("en")  ;
	doctype(&x)}

请注意——这违反了Rust的惯例——一些函数是首字母大写的。每个函数都有两种形式。你可以把首字母大写的函数看作是非首字母大写的函数调用,后面跟着一个假设的.finish()方法来关闭构建器。例如:

let x = a("some link") .href("https://somelink.com") .finish()

而不是上面这样,我们有

let x = a("some link") .Href("https://somelink.com")

这是出于纯粹的人体工程学原因决定的。

由于一切都是String,如果库缺少某些功能,你可以手动添加

let mut x = Div("some content")
x += "<span>some content</span>"

注意:与Rust的保留关键字(type, loop等)冲突的函数名后面会加上下划线。例如:type_

依赖关系

~9KB