@beatzball/litro

中文文档
0.18.0发布于 2026/11/05Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 2358

Fullstack web framework for web components — choose Lit, FAST Element, or Elena via an adapter. File-based routing, streaming SSR, SSG, and Nitro deployment adapters. A standards-based Next.js / Nuxt.js alternative.

原始使用文档
文档目录7 节
  1. Quick start
  2. Hello World
  3. How It Compares
  4. SEO
  5. Documentation
  6. Packages
  7. License

litro

A fullstack web framework for web components, powered by Nitro.

  • Framework adapters — choose Lit (default), FAST Element, or Elena via --adapter
  • File-based routing — pages/index.ts → /, pages/blog/[slug].ts → /blog/:slug
  • Streaming SSR — Declarative Shadow DOM (Lit/FAST) or light DOM (Elena)
  • Client hydration — LitroRouter (URLPattern-based) takes over after SSR with no flicker
  • Server data fetching — definePageData() runs on the server, serialized to the client
  • Content layer — litro:content virtual module for Markdown blogs with 11ty-compatible frontmatter
  • API routes — plain server/api/ files using H3 handlers
  • One port in dev — Vite and Nitro share a single HTTP port
  • Any deployment — Node.js, Cloudflare Workers, Vercel Edge, static via Nitro adapters

Quick start

# npm
npm create @beatzball/litro@latest my-app

# pnpm
pnpm create @beatzball/litro my-app

# yarn
yarn create @beatzball/litro my-app

# bun
bun create @beatzball/litro my-app

# deno
deno init --npm @beatzball/litro my-app
cd my-app
pnpm install
pnpm dev

Hello World

// pages/index.ts
import { html } from 'lit';
import { customElement } from 'lit/decorators.js';
import { LitroPage } from '@beatzball/litro/runtime';
import { definePageData } from '@beatzball/litro';

export const pageData = definePageData(async () => ({
  message: 'Hello from the server!',
}));

@customElement('page-index')
export default class IndexPage extends LitroPage {
  override render() {
    const data = this.serverData as { message: string } | null;
    return html`<h1>${data?.message}</h1>`;
  }
}

How It Compares

LitroNext.jsNuxt.js
Component modelLit / FAST / ElenaReactVue
File-based routing✓✓✓
SSR / SSG✓✓✓
Server engineNitrocustomNitro
Hello World JS~8kB~90kB~60kB
Virtual DOM—✓✓
W3C standard comps✓——

Note on Hello World JS figures: approximate figures based on widely-cited community benchmarks and published framework documentation — not independently measured by this project. Lit's ~5 kB runtime size is documented on lit.dev. Next.js and Nuxt.js figures reflect commonly reported baseline JS payloads for a minimal page and vary by framework version and configuration.


SEO

Litro renders all pages server-side before sending HTML to the browser — via Declarative Shadow DOM (Lit/FAST) or light DOM (Elena). Search engines receive fully-rendered content — the same approach used by Next.js and Nuxt.js. Client-side-only web components have SEO limitations; Litro's SSR eliminates them by default.

How this works →


Documentation

Full documentation at litro.dev.


Packages

PackageDescription
@beatzball/litroThis package — core framework
@beatzball/litro-routerStandalone URLPattern router (zero dependencies)
@beatzball/create-litronpm create @beatzball/litro scaffolding CLI — fullstack, 11ty-blog, starlight, and supernova recipes

License

Apache License 2.0 — Copyright 2026 beatzball.

版本与发布记录

@beatzball/litro 共发布 38 个版本,首次发布于 2026/03/09;过去 12 个月发布了 38 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.18.0latest2026/11/053 天前
0.17.62026/10/299 天前
0.17.52026/10/299 天前
0.17.42026/10/2514 天前
0.17.32026/10/2315 天前
0.17.22026/09/291 个月前

关于 @beatzball/litro 的常见问题

@beatzball/litro 是什么?

Fullstack web framework for web components — choose Lit, FAST Element, or Elena via an adapter. File-based routing, streaming SSR, SSG, and Nitro deployment adapters. A standards-based Next.js / Nuxt.js alternative.

如何安装 @beatzball/litro?

在项目目录运行 npm install @beatzball/litro,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:typescript(^5.x)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。它还提供命令行工具 litro,可以用 npx litro 直接运行。

@beatzball/litro 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@beatzball/litro 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@beatzball/litro 可以商用吗?

@beatzball/litro 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@beatzball/litro 的下载量有多少?

根据 npm 官方下载统计,@beatzball/litro 在 2026/10/08 – 2026/11/06 这 30 天内被下载 2,358 次,日均约 79 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@beatzball/litro 还在维护吗?

最新版本 0.18.0 发布于 2026/11/05(3 天前);至今共发布 38 个版本,其中过去 12 个月发布了 38 个;首次发布于 2026/03/09。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。