展示HN:Proa - 一款具有快速SSR和多目标渲染的Rust网页框架
一个极其高效、功能齐全的Rust网页框架,围绕可组合的多目标渲染的新编程模型构建。开始使用 观看介绍 一个对象。每个渲染目标。HTML、Markdown和其他渲染目标,来自一个类型化组件。观看多目标渲染 ProductCard :: new (product) impl <L: DataLoader> MdRenderSync<L> for ProductCard { fn render_md(self, cx: &mut WebContext<L>) -> Result<(), WriteError> { md_sync! { r###" # {self.product.name} { Link :: new ("立即购买", self.product.url) } "### }.render_md(cx) } } md_sync! { r###" [ {self.label} ]( {self.href} ) "### } impl <L: DataLoader> WebRenderSync<L> for ProductCard { fn render(self, cx: &mut WebContext<L>) -> Result<(), WriteError> { html_sync! { <article data-product-card> <h2>{self.product.name}</h2> { Link :: new ("立即购买", self.product.url) } </article> }.render(cx) } } html_sync! { <a href={self.href} data-link> {self.label} </a> } 构建快速、信息密集的应用。探索使用Proa构建的GitHub、Sentry和Airbnb的再创作,具有快速服务器渲染和选择性交互性。查看展示 基准测试 oven-sh / bun 代码 问题 5000+ 拉取请求 1900+ 操作 安全性 见解 [追踪] Zig/C++分支:Rust->Zig移植进度 #31136 关闭 MaurerAnton想将8个提交合并到oven-sh:main 对话 9 提交 8 检查 1 文件更改 16 +461 -10 23.5微秒 Proa渲染p50 5.56毫秒 React renderToString p50 237倍更快 在8核CPU AMD EPYC-Milan VPS上测得的暖生产p50。 独立演示。与GitHub、Sentry或Airbnb无关或未被认可。速度背后的数字。构建设计系统。Proa UI提供Shadcn风格的Proa组件。源代码在你的仓库中,用类型化Rust编写。主题化,组合,发布。浏览组件 它需要JavaScript吗?是否可访问?我可以重新样式化它吗? 单个或多个开放面板,完全通过CSS构建,不携带任何JavaScript。 发票状态金额 INV-2041 已付款 $1,499.00 INV-2042 待处理 $399.00 INV-2043 已付款 $399.00 INV-2044 已退款 $399.00 头部、主体、页脚和标题部分组合成紧凑的记录视图。跨三种大小和三种意图的实心、轮廓、幽灵和链接变体。 工作空间 在您的部署URL中使用。默认服务器渲染 仅在需要时发送岛屿 标签、描述和错误文本被连接到任何控件,无论方向如何。 部署预览 2分钟前推送到主分支。 渲染 41微秒 客户端JS 0 kB 从您的仓库源代码构建。 头部、内容和页脚插槽,最产品屏幕构建的表面。 2026年3月 一 二 三 四 五 六 日 单选和范围选择、月份分页和键盘导航,呈现为纯HTML。 每周请求 36.2k 01.8k 3.6k 5.5k 7.3k 3.2k 周一 4.1k 周二 3.8k 周三 5.2k 周四 6.4k 周五 5.9k 周六 7.3k 周日 区域、条形、折线、圆环和堆叠系列作为纯SVG在服务器上绘制。 带分隔符、尺寸变体和样式化的指针的分组一次性代码插槽。 ME 代理可以为这个应用添加设置页面吗? 9:41 AI Proa 是的。每个组件在您的代码库中都是类型化的Rust,因此编译器在进入浏览器之前就会检查编辑。 9:41 ME 你们这个包了多少JavaScript? 9:42 消息气泡、头像、时间戳和输入指示器为助手界面。 语法高亮在服务器上完成,因此没有高亮器会发送到浏览器。 58个组件,每个都有一个实时示例、一个道具表和可以复制的Rust。 横向滚动或使用箭头键浏览组件演示。 一切人们想要的现代网页应用,底层没有渲染税。 组件系统和框架表面,而不是模板引擎。 框架 框架原语超越模板胶水。Proa将流媒体、请求数据、路由、元数据和响应控制保留在与您的组件相同的类型化WebContext中。 流式SSR,无序或有序 当顺序重要时以文档顺序刷新HTML,或者让Suspense边界流出准备好的无序块,当慢速数据不应阻止页面时。 DataLoader支持的WebContext 每个渲染都具有对请求范围数据、响应元数据、路由状态和加载器缓存的类型访问,通过组件已经接收的相同WebContext。 类型化SSR框架语义 布局、路由、元数据、静态资产、表单、变更和渐进导航通过相同的Rust组件模型组合,而不是模板胶水。 交互性 增加交互性而不放弃本机SSR。保持页面作为服务器渲染的HTML,然后选择特定控件转入客户端行为,使用类型信号和事件处理器。 Proa只将移动部分编译为JavaScript。 RSJS岛屿 使用signal(...)、bind_value、类型事件和命名处理程序在Rust中。编译器降级客户端行为。 每个水合RSJS岛屿会发出一个小的原生JS模块和种子状态,带有大约1.3 KB的共享运行时(压缩后)。 采用 保持您已经拥有的堆栈。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡