1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Klarkxy-gohtml

Клонировать/Скачать
README.md 10 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 17.03.2025 00:42 b126e27

GoHtml

Версия : 1.0 Используйте Go для динамического генерирования HTML.

go get github.com/klarkxy/gohtml


Возможности

  • GoTag GoTag представляет собой тэг HTML. Используйте интерфейс String() для создания строки вида <{name} {attr}>{tags}</{name}>.
  • GoHtml GoHtml представляет собой страницу HTML. Используйте интерфейс String() для создания строки HTML, либо интерфейс MinString() для создания компактной строки HTML.
  • GoParser @TODO GoParser — это парсер HTML, который может преобразовать стандартный HTML-файл в объект Gohtml.
  • GoQuery @TODO GoQuery — это инструмент, аналогичный jQuery, который позволяет выполнять массовые операции над GoTag.

GoTag

Создайте 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">

Вложенные GoTag

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.### Пустой GoHTML
htm := 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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/Klarkxy-gohtml.git
git@api.gitlife.ru:oschina-mirror/Klarkxy-gohtml.git
oschina-mirror
Klarkxy-gohtml
Klarkxy-gohtml
master