@basenative /服务器
用于BaseNative模板的SSR渲染器-插值,@if, @for, @switch和流
部分 BaseNative 生态系统——基于信号的web运行时,基于原生HTML。
安装
npm install @basenative/server
快速入门
import { render, renderToStream, renderToReadableStream } from '@basenative/server';
const html = `
<h1>Hello, {{ name }}!</h1>
<template @if="items.length > 0">
<ul>
<template @for="item of items; track item.id">
<li>{{ item.name }}</li>
</template>
</ul>
</template>
<template @else>
<p>No items found.</p>
</template>
`;
const output = render(html, { name: 'World', items: [{ id: 1, name: 'First' }] });
流媒体
// Express streaming response
renderToStream(html, ctx, res, { hydratable: true });
// Web Streams (Cloudflare Workers, Deno, Bun)
const stream = renderToReadableStream(html, ctx, { hydratable: true });
return new Response(stream);
模板的指令
{{ expr }}-将表达式插入到文本或属性值中。@if="expr"-有条件地呈现<template>块。@else-紧接在一个@if模板。@for="item of list; track item.id"-迭代列表。循环变量:$index,$first,$last,$even,$odd.@empty-渲染时@for列表为空。@switch="expr"/@case="value"/@default-开关/案例渲染。:attr="expr"-计算表达式并将其设置为HTML属性(省略if)false或者null)。
API
render(html, ctx, options?)—同步呈现HTML模板字符串。返回呈现的HTML字符串。renderToStream(html, ctx, stream, options?)-渲染和管道输出到Node.js可写流。renderToReadableStream(html, ctx, options?)-渲染和返回一个Web流ReadableStream.
选项
hydratable-将指令输出封装在<!--bn:*-->客户端水化标记。onDiagnostic(diagnostic)-模板警告和错误时调用的回调。
许可证
apache - 2.0