Htmler — تولید HTML با Dart

Htmler به شما امکان می‌دهد HTML را به صورت برنامه‌ای با کد Dart بسازید، بدون اینکه مستقیماً رشته‌های HTML بنویسید.

چه زمانی از Htmler استفاده کنید؟

  • ساخت کامپوننت‌های قابل استفاده مجدد
  • تولید HTML پویا در کد Dart
  • جاهایی که قالب‌های Jinja گزینه مناسبی نیستند

ساخت HTML

import 'package:finch/finch_htmler.dart';

var html = Tag.div(
  classes: ['container', 'mt-4'],
  children: [
    Tag.h1(text: 'سلام دنیا', classes: ['title']),
    Tag.p(
      text: 'این متن توسط Htmler ساخته شده است.',
      classes: ['lead'],
    ),
    Tag.a(
      href: '/about',
      text: 'بیشتر بدانید',
      classes: ['btn', 'btn-primary'],
    ),
  ],
);

return rq.renderData(data: html.render(), contentType: 'text/html');

کلاس Tag

متد توضیح
Tag.div(...) تگ <div>
Tag.span(...) تگ <span>
Tag.p(...) تگ <p>
Tag.h1() تا Tag.h6() تگ‌های عنوان
Tag.a(href, text) تگ <a>
Tag.img(src, alt) تگ <img>
Tag.ul(children) تگ <ul>
Tag.li(...) تگ <li>
Tag.table(...) تگ <table>
Tag.form(...) تگ <form>
Tag.input(...) تگ <input>
Tag.button(...) تگ <button>
Tag.raw(html) HTML خام بدون escape

Cache ریشه \$Cache

\$Cache محتوای از پیش‌رندرشده را کش می‌کند:

var cached = \$Cache.get('sidebar', () => buildSidebar());

جاسازی Jinja با JJ.\$var()

برای جاسازی متغیر Jinja در خروجی Htmler:

Tag.div(
  children: [
    Tag.raw(JJ.\$var('username')),  // {{ username }}
  ],
)

renderTag در controller

Future<String> sidebar() async {
  var tag = Tag.nav(
    classes: ['sidebar'],
    children: buildNavItems(),
  );
  return rq.renderTag(tag);
}