Версия : 1.0 Используйте Go для динамического генерирования HTML.
go get github.com/klarkxy/gohtml
String()
для создания строки вида <{name} {attr}>{tags}</{name}>
.String()
для создания строки HTML, либо интерфейс MinString()
для создания компактной строки HTML.Создайте GoTag с помощью gohtml.Tag(name)
.
// Преобразование GoTag в строку HTML
func (cur *GoTag) String() string;
// Вставка нескольких тэгов/текста в текущий тэг, возврат текущего тэга
func (cur *GoTag) Append(tags ...fmt.Stringer) *GoTag;
// Создание нового тэга внутри текущего, возврат созданного тэга
func (cur *GoTag) Tag(name string) *GoTag;
// Установка текущего тэга как самозакрывающегося, возврат текущего тэга
func (cur *GoTag) Self() *GoTag;
// Вставка строки в текущий тэг, возврат текущего тэга
func (cur *GoTag) Text(str string) *GoTag;
// Установка атрибутов, возврат текущего тэга
func (cur *GoTag) Attr(attrs ...string) *GoTag;
htm1 := gohtml.Tag("p").Text("Привет, мир!")
fmt.Println(htm1.String())
Выходные данные:
<p>
Привет, мир!
</p>
```### Установка атрибутов
#### Установка одного атрибута
```go
htm := gohtml.Tag("a").Attr("href", "https://www.yandex.ru/").Text("Перейти на Яндекс")
fmt.Println(htm.String())
Выходные данные:
<a href="https://www.yandex.ru/">
Перейти на Яндекс
</a>
Можно вызывать метод Attr несколько раз, либо передать несколько параметров за один вызов.
htm1 := gohtml.Tag("button").Attr("type", "button").Attr("href", "https://www.yandex.ru/").Text("Перейти на Яндекс")
htm2 := gohtml.Tag("button").Attr("type", "button", "href", "https://www.yandex.ru/").Text("Перейти на Яндекс")
fmt.Println(htm1.String())
fmt.Println(htm2.String())
Выходные данные:
<button type="button" href="https://www.yandex.ru/">
Перейти на Яндекс
</button>
<button type="button" href="https://www.yandex.ru/">
Перейти на Яндекс
</button>
HTML-самозакрывающиеся тэги
htm1 := gohtml.Tag("meta").Attr("http-equiv", "X-UA-Compatible").Attr("content", "IE=edge").Self()
fmt.Println(htm1.String())
Выходные данные:
<meta http-equiv="X-UA-Compatible" content="IE=edge">
table := gohtml.Tag("table")
tr1 := table.Tag("tr")
tr1.Tag("th").Text("1")
tr1.Tag("th").Text("2")
tr2 := table.Tag("tr")
tr2.Tag("th").Text("3")
tr2.Tag("th").Text("4")
fmt.Println(table.String())
Выходные данные:
<table>
<tr>
<th>
1
</th>
<th>
2
</th>
</tr>
<tr>
<th>
3
</th>
<th>
4
</th>
</tr>
</table>
Сейчас поддерживаются большинство HTML-тегов, которые можно использовать напрямую.
Также поддерживаются способы gohtml.Xxx()
или GoTag.Xxx()
, эффект которых аналогичен gohtml.Tag("xxx")
или GoTag.Tag("xxx")
.Аналогично поддерживаются способы GoTag.Yyy(val string)
, позволяющие непосредственно устанавливать атрибуты, с эффектом, аналогичным GoTag.Attr("yyy", val)
.
Дополнительная информация доступна в файлах api.go, attr.go, self.go, singleattr.go.
Учитывая большое количество типов атрибутов в HTML, возможно отсутствие некоторых из них. Обязательно сообщите мне об этом.
form := gohtml.Form()
form.H2().Text("Пожалуйста, войдите")
form.Input().Type("username").Placeholder("Имя пользователя").Required().Autofocus()
form.Input().Type("password").Placeholder("Пароль").Required()
divlabel := form.Div().Label()
divlabel.Input().Type("checkbox").Value("Запомнить меня")
divlabel.Text("Запомнить меня.")
form.Button().Type("submit").Text("Войти")
fmt.Println(form.String())
Выходные данные
<form>
<h2>
Пожалуйста, войдите
</h2>
<input type="username" placeholder="Имя пользователя" required autofocus>
<input type="password" placeholder="Пароль" required>
<div>
<label>
<input type="checkbox" value="Запомнить меня">
Запомнить меня.
</label>
</div>
<button type="submit">
Войти
</button>
</form>
```## GoHtml
Обычно HTML-файл можно разделить на следующие шесть частей.
```html
<!DOCTYPE html>
<html>
<head>
{{.Meta}}
{{.Link}}
{{.HtmlHead}}
</head>
<body>
{{.Body}}
{{.Script}}
</body>
{{.Html}}
</html>
Мы используем gohtml.NewHtml()
для создания объекта GoHtml и вызываем его метод String()
, чтобы преобразовать его в строку HTML.### Часто используемые интерфейсы
// Создает новый объект GoHtml
func NewHtml() *GoHtml;
// Преобразует в строку html. Если не требуется отображение пробелов и переносов строки, использовать MinString()
func (cur *GoHtml) String() string;
func (cur *GoHtml) MinString() string;
// Получает соответствующий Tag
func (cur *GoHtml) Html() *GoTag;
func (cur *GoHtml) Head() *GoTag;
func (cur *GoHtml) Body() *GoTag;
// Добавляет новый Tag
func (cur *GoHtml) Meta() *GoTag;
func (cur *GoHtml) Link() *GoTag;
func (cur *GoHtml) Script() *GoTag;
Html()
, вызов метода Tag()
добавляет Tag в место {{.Html}}
.Head()
и Body()
, любое добавление атрибутов будет игнорировано.Meta()
, Link()
и Script()
, вызов метода добавляет соответствующий Tag.### Пустой GoHTMLhtm := gohtml.NewHtml()
fmt.Println("Строка:")
fmt.Println(htm.String())
fmt.Println("Минимальная строка:")
fmt.Println(htm.MinString())
Выходные данные
Строка:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
</body>
</html>
Минимальная строка:
<!DOCTYPE html><html><head></head><body></body></html>
```### Основной шаблон Bootstrap 3
```go
bootstrap := gohtml.NewHtml()
bootstrap.Html().Lang("ru-RU")
// Часть meta
bootstrap.Meta().Charset("utf-8")
bootstrap.Meta().HttpEquiv("X-UA-Compatible").Content("IE=edge")
bootstrap.Meta().Name("viewport").Content("width=device-width, initial-scale=1")
// Внедрение CSS
bootstrap.Link().Href("https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css").Rel("stylesheet")
// Внедрение JS
bootstrap.Script().Src("https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js")
bootstrap.Script().Src("https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js")
// Заголовок
bootstrap.Head().Title().Text("Шаблон Bootstrap 101")
// Тело
bootstrap.Body().H1().Text("Привет, мир!")
fmt.Println(bootstrap.String())
Выходные данные
<!DOCTYPE html>
<html lang="ru-RU">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">
<title>
Шаблон Bootstrap 101
</title>
</head>
<body>
<h1>
Привет, мир!
</h1>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
</body>
</html>
Теперь Bootstrap модуль уже включен, используйте import "github.com/klarkxy/gohtml/bootstrap"
для прямого использования!
github.com/klarkxy/gohtml/bootstrap
Если вы столкнулись с проблемами при использовании или у вас есть предложения, обязательно свяжитесь со мной, спасибо!
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )