Htmler — HTML genereren met Dart
Htmler stelt je in staat HTML programmatisch te bouwen met Dart-code, zonder HTML-strings direct te schrijven.
Wanneer Htmler gebruiken?
- Herbruikbare componenten bouwen
- Dynamisch HTML genereren in Dart-code
- Wanneer Jinja-sjablonen geen geschikte optie zijn
HTML bouwen
import 'package:finch/finch_htmler.dart';
var html = Tag.div(
classes: ['container', 'mt-4'],
children: [
Tag.h1(text: 'Hallo wereld', classes: ['title']),
Tag.p(
text: 'Deze tekst is gebouwd met Htmler.',
classes: ['lead'],
),
Tag.a(
href: '/about',
text: 'Meer weten',
classes: ['btn', 'btn-primary'],
),
],
);
return rq.renderData(data: html.render(), contentType: 'text/html');
Tag-klasse
| Methode | Beschrijving |
|---|---|
Tag.div(...) |
<div>-tag |
Tag.span(...) |
<span>-tag |
Tag.p(...) |
<p>-tag |
Tag.h1() t/m Tag.h6() |
Koptaggen |
Tag.a(href, text) |
<a>-tag |
Tag.img(src, alt) |
<img>-tag |
Tag.ul(children) |
<ul>-tag |
Tag.li(...) |
<li>-tag |
Tag.table(...) |
<table>-tag |
Tag.form(...) |
<form>-tag |
Tag.input(...) |
<input>-tag |
Tag.button(...) |
<button>-tag |
Tag.raw(html) |
Ruwe HTML zonder escaping |
Cache-root \$Cache
\$Cache slaat vooraf gerenderde inhoud op:
var cached = \$Cache.get('sidebar', () => buildSidebar());
Jinja insluiten met JJ.\$var()
Om een Jinja-variabele in Htmler-uitvoer in te sluiten:
Tag.div(
children: [
Tag.raw(JJ.\$var('username')), // {{ username }}
],
)
renderTag in een controller
Future<String> sidebar() async {
var tag = Tag.nav(
classes: ['sidebar'],
children: buildNavItems(),
);
return rq.renderTag(tag);
}