ssr method
void
ssr(
- String path,
- BloomNode builder(
- BloomRequest request
- HeadManager head(
- BloomRequest request
- String layout(
- String bodyHtml,
- HeadManager? head
- List<
BloomMiddleware> middlewares = const [],
Mounts a high-performance Server-Side Rendered (SSR) endpoint using BloomNode.
Executes pure-Dart builder in <1ms without JavaScript engine overhead.
Automatically wraps the resulting HTML using layout, head, or a default HTML5 template.
Example
router.ssr('/dashboard', (req) => Div(
classes: 'p-6 max-w-4xl mx-auto',
children: [H1(text: 'Welcome back')],
));
Implementation
void ssr(
String path,
BloomNode Function(BloomRequest request) builder, {
HeadManager Function(BloomRequest request)? head,
String Function(String bodyHtml, HeadManager? head)? layout,
List<BloomMiddleware> middlewares = const [],
}) {
get(path, (request) async {
final node = builder(request);
final bodyHtml = renderToHtml(node);
final headManager = head?.call(request);
final String fullHtml;
if (layout != null) {
fullHtml = layout(bodyHtml, headManager);
} else if (headManager != null) {
fullHtml = headManager.wrapDocument(bodyHtml);
} else {
fullHtml =
'<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"></head><body>$bodyHtml</body></html>';
}
return BloomResponse.html(fullHtml);
}, middlewares: middlewares);
}