Signature
String component(String name, [DValue props], [Request& context])
Renders another .uce file as a component and returns the captured output as a String.
component() resolves the target file relative to the current page and also tries the components/ prefix automatically, mirroring the shorthand used by the starter example project.
Component props are passed in context.props.
Because <?= ... ?> HTML-escapes its value, embed component markup with <?: component(...) ?>, print(component(...)), or use component_render(...) for direct output.
Named Components
When name contains a colon, such as components/card:BODY, the part after the colon selects a named component handler exported from the component file through COMPONENT:BODY(Request& context).
The default handler is COMPONENT(Request& context).
When name starts with a colon, such as :BODY, the target resolves against the current .uce file so component files can call their own named handlers without repeating the file name.
When a component unit defines ONCE(Request& context), the runtime calls that hook once per request, per resolved component file, before the first COMPONENT() or COMPONENT:NAME() handler from that file runs.
Resolution Order
exact file name
exact file name with
.ucethe same two forms under
components/
Common Patterns
Default component handler:
Named component handler:
Self-targeted named handler from inside the same file:
Preparing props in C++ before rendering:
Embedding returned component markup inside a literal block:
Because <?= ... ?> escapes HTML, use <?: ... ?> when inserting the returned markup from component().
Lifecycle Notes
INIT(Request& context)runs once when the worker loads that unit into memory.ONCE(Request& context)runs once per request before the first component or render entrypoint from that file.component()then calls eitherCOMPONENT(Request& context)or the selectedCOMPONENT:NAME(Request& context)handler.
Example
print(component("examples/sample_unit"), "\n");
hello from the sample component