WWW.YOUINFO.SITE
标签聚合 TypeScript

/tag/TypeScript

v2ex · 2026-06-08 16:54:25+08:00 · tech

主要是新增了更多的 TypeScript Shell API , 也修复了一些错误。 哦,DBNova 会根据 Schema 生成对应的 TypeScript ,并且内置了一个 ORM ,你可以使用 TypeScript 在 Monaco Editor 中和数据库交互。 当然 SQL 也是可以的,对于 SQL ,DBNova 也有扩展。 还有,现在在编辑 TypeScript 的时候,也可以跳转到类型定义了。 也支持 MongoDB 和 Redis 。 下载 文档 如果你想要使用 TypeScript Shell 的话,请先提前大致浏览一下 TypeScript Shell 。

LinuxDo 最新话题 · 2026-06-03 13:11:01+08:00 · tech

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社区和佬友监督: 是 以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出 上个月在linuxdo开源了一键搞定skill转为15个agent产品的项目, 【开源】又开源15个Agent给佬友! 把技能做成产品-基于skill用 claude-agent-sdk 资源荟萃 本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社区和佬友监督: 是 以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出 之前我在l… 佬友比较喜欢, 那些是基于 claude-agent-sdk 的框架的agent, 肯定是不错的,但是还是有缺点,就是太重了,今天给佬介绍一个轻型的强大的agent框架 flue framework: The Agent Harness Framework,Agent 脚手架框架。开源没多久,star 已经爬到4000+了。 简单介绍flue: 我不打算要求佬学会这个框架,没有必要,现在编程都交给AI吧,所以我直接搞一个skill出来,你安装好,让AI帮你一键搞定 flue agent就可以: github.com GitHub - liangdabiao/flue-framework-skill: Covers createAgent, init, defineTool,... Covers createAgent, init, defineTool, defineAgentProfile, routing, SSE streaming, production deployment, and all known pitfalls. --- # Flue Framework Skill Flue is a TypeScript framework for building AI agents using the harness-driven architecture. This skill provides comprehensive guidance for creating, developing, and deploying Flue agents 展示效果: 评论分析(测试复杂的agent): 总结: 本质上,你什么都不需要做,直接一键就能够把你的skills转为agent产品了, flue框架其实也不需要学习,大概了解概念就可以。 而概念其实类似 claude-agent-sdk 和 langchain的deepagents。 但是这是更好的技术方向,所以非常值得试试。 github.com GitHub - liangdabiao/flue-framework-skill: Covers createAgent, init, defineTool,... Covers createAgent, init, defineTool, defineAgentProfile, routing, SSE streaming, production deployment, and all known pitfalls. --- # Flue Framework Skill Flue is a TypeScript framework for building AI agents using the harness-driven architecture. This skill provides comprehensive guidance for creating, developing, and deploying Flue agents 2 个帖子 - 1 位参与者 阅读完整话题

v2ex · 2026-06-02 10:30:40+08:00 · tech

心血来潮,想看一下自己所有 TypeScript repo 的 star 数量的排名。 找了一圈,似乎没找到现成的数据或者网站。 于是,我就用 WeChat ACP 自己躺床上 vibe 了一个: https://formulahendry.github.io/github-creator-ranking/ 看了下,我的所有 TypeScript repo 一共有 5,938 star ,排在全国 55 名: https://formulahendry.github.io/github-creator-ranking/users/formulahendry/ 代码完全开源: https://github.com/formulahendry/github-creator-ranking 目前还支持看 TypeScript 的排名。 欢迎围观~

LinuxDo 最新话题 · 2026-05-31 12:10:36+08:00 · tech

你是TypeScript、Node.js、Vite、Vue.js、Vue Router、Pinia、VueUse、Headless UI、Element Plus和Tailwind方面的顶尖专家,对这些技术的最佳实践和性能优化技巧有着深刻的理解。你将负责生成、审查和优化符合以下所有规范的代码: 核心职责 生成符合所有指定技术规范的高质量代码 审查现有代码,识别不符合规范的地方并提供改进方案 提供性能优化建议,确保应用符合核心Web Vitals标准 指导项目架构设计,确保代码可维护性和可扩展性 代码风格与结构要求 编写简洁、可维护且技术准确的TypeScript代码,并提供完整示例 坚持函数式和声明式编程模式,严格避免使用类 通过迭代和模块化遵循DRY原则,消除代码重复 使用描述性变量名,搭配辅助动词(例如: isLoading 、 hasError 、 canSubmit ) 系统组织文件结构,每个文件仅包含相关内容:组件、子组件、辅助函数、静态内容和类型分离 命名规范执行 目录使用小写加短横线的命名方式(例如: components/auth-wizard 、 composables/use-user-state ) 所有函数优先使用具名导出,避免默认导出 组件名使用PascalCase,组合式函数使用use前缀(如 useUserData ) TypeScript严格使用 所有代码必须使用TypeScript编写,优先使用接口而非类型,利用接口的可扩展性和合并能力 避免使用枚举,改用对象映射实现更好的类型安全性和灵活性 所有Vue组件必须是带有完整TypeScript接口定义的函数式组件 语法与格式标准 使用 function 关键字定义纯函数,利用其提升机制和代码清晰性 始终使用Vue Composition API的 <script setup> 风格,绝不使用Options API 合理使用ref/reactive,优先使用ref处理基本类型,reactive处理复杂对象 UI与样式实现 使用Headless UI、Element Plus和Tailwind CSS进行组件开发和样式设计 采用移动端优先的响应式设计方法,使用Tailwind的断点系统实现多端适配 保持样式与逻辑分离,避免内联样式,充分利用Tailwind的工具类 性能优化实施 在所有适用场景使用VueUse组合式函数,增强响应性和性能 将异步组件包装在 Suspense 中,必须提供加载状态的备用UI 对非关键组件实施动态加载,减少首屏 bundle 大小 图片优化:使用WebP格式,包含width/height尺寸数据,实现懒加载 在Vite构建中配置代码分割,实施优化的代码块策略,生成更小的打包文件 Web Vitals优化 使用Lighthouse或WebPageTest等工具持续监测和优化核心Web Vitals(LCP、CLS、FID) 提供具体的优化建议,包括资源加载策略、渲染优化等 质量控制机制 每次生成或审查代码时,都要对照上述规范进行自我验证 主动识别潜在的性能问题和代码坏味道 当遇到不符合规范的代码时,提供具体的重构方案和原因说明 对于不明确的需求,主动寻求澄清,确保生成的代码完全符合业务和技术要求 你必须严格遵守所有这些规范,确保每一段输出的代码都是高质量、符合最佳实践的生产级代码。 1 个帖子 - 1 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-05-27 01:40:20+08:00 · tech

前天发现kimi用typescript重构了kimi cli,仓库名叫kimi code。然后在issues里面看到有人希望有新的cli拥有webui,然后我这灵机一动,干嘛不给kimi专门做个kimi desktop,你看看codex desktop,claude desktop,trae solo,这些桌面端应用也是很多的嘛。 因此,用codex跑了一个下午,最终出现了一个可用的MVP版本,我称之为kimi desktop preview。站内是有kimi运营的吧我记得。希望官方也把desktop提上日程。 整体页面参考codex desktop,三栏可调,左侧放回话记录,中间放对话消息和聊天框,右侧放预览和git diff。不过这个右侧打开文件暂时只支持HTML和markdown。 至于这样的页面设计,是因为忘记在哪里看到过说这样的设计是AI时代最协调的设计,也可能是我胡诌的哈。其实是codex用习惯了 支持切换不同模型,对应config.toml中的model 支持切换审查方式,对应config.toml中的auto… 支持切换思考程度 可以选择workspace工作空间 可以选择会话session,对应.kimi code下的sessions文件夹 支持markdown格式展示对话消息,Latex展示格式,mermaid展示流程图 支持在设置中直接配置本地的config.toml 切换url 和 api key 更快速。 对了,还支持输入 / 提示快捷操作。 支持工具调用展示,支持打断输出。 接下来应该就是要完善桌面端的体验,以及将改desktop作为一个工具台接入IM平台,实现远程操控 不知道各位佬还有什么建议与意见。 8 个帖子 - 5 位参与者 阅读完整话题

v2ex · 2026-05-25 13:36:30+08:00 · tech

大家好,我做了一个 iOS App ,叫 Await 。 它的出发点很简单:很多点子太小,不值得专门做成一个完整 App ,但如果能真的放到 iPhone 主屏上,又会变得挺有用。 比如我之前看到一张 ADHD Bingo 卡片:一个 5x5 的格子,每个格子是一件很小的日常任务,做完就点一下。它本来只是一张截图,但我觉得这不就是一个小组件该有的样子吗? 用 Codex + Await ,我大概一分半做出了一个可点击的基础版。再调几轮,加上手绘网格、荧光笔标记和每天零点重置,前后大概五分钟,就变成了一个真的可以放到主屏上的小组件。 Await 做的事情是:用 TypeScript 创建真实的 iPhone 小组件,不用打开 Xcode ,也不用自己配置 WidgetKit extension 。 大概工作流是: 把想法描述给 Cursor / Claude Code / Codex 让 AI 写出 TypeScript 把代码放进 Await 在 iPhone 上预览和调整 放到主屏上 它不是 web view ,也不是生成一张静态图片。Await 会把 TypeScript/TSX DSL 渲染成真实的小组件 view ,可以有状态、timeline 、intent 、网络请求、本地存储、文件、音乐、音频等能力。 另外我做了一个 custom panel 机制。代码里可以把一些参数标记成可调整项,比如文字、颜色、字号、开关、token 、数据源路径。Await 会在 App 里自动生成面板,而且面板和代码是同步的。 这个对 AI coding 很有用:AI 先搭结构,后面那些「颜色深一点」「字号大一号」「这个 token 换一下」之类的细节,就不用每次都让 AI 重写代码了。 我录了两个视频,能更直观看到它在 iPhone 上的效果: https://www.bilibili.com/video/BV1hJGL6ZEgB https://www.bilibili.com/video/BV1hJGL6ZEcX 当然,小组件不是完整 App ,WidgetKit 的限制还在:刷新频率、内存、长时间实时交互这些都不能乱来。Await 不是要把小组件变成完整 App ,而是想把这些限制之内的空间变得更容易创作。 App Store: https://apps.apple.com/app/id6755678187 Website: https://awaitwidget.com 想听听大家怎么看: 如果做一个真实 iPhone 小组件的成本足够低,你会想给自己做一个什么样的小组件?

v2ex · 2026-05-25 13:36:30+08:00 · tech

大家好,我做了一个 iOS App ,叫 Await 。 它的出发点很简单:很多点子太小,不值得专门做成一个完整 App ,但如果能真的放到 iPhone 主屏上,又会变得挺有用。 比如我之前看到一张 ADHD Bingo 卡片:一个 5x5 的格子,每个格子是一件很小的日常任务,做完就点一下。它本来只是一张截图,但我觉得这不就是一个小组件该有的样子吗? 用 Codex + Await ,我大概一分半做出了一个可点击的基础版。再调几轮,加上手绘网格、荧光笔标记和每天零点重置,前后大概五分钟,就变成了一个真的可以放到主屏上的小组件。 Await 做的事情是:用 TypeScript 创建真实的 iPhone 小组件,不用打开 Xcode ,也不用自己配置 WidgetKit extension 。 大概工作流是: 把想法描述给 Cursor / Claude Code / Codex 让 AI 写出 TypeScript 把代码放进 Await 在 iPhone 上预览和调整 放到主屏上 它不是 web view ,也不是生成一张静态图片。Await 会把 TypeScript/TSX DSL 渲染成真实的小组件 view ,可以有状态、timeline 、intent 、网络请求、本地存储、文件、音乐、音频等能力。 另外我做了一个 custom panel 机制。代码里可以把一些参数标记成可调整项,比如文字、颜色、字号、开关、token 、数据源路径。Await 会在 App 里自动生成面板,而且面板和代码是同步的。 这个对 AI coding 很有用:AI 先搭结构,后面那些「颜色深一点」「字号大一号」「这个 token 换一下」之类的细节,就不用每次都让 AI 重写代码了。 我录了两个视频,能更直观看到它在 iPhone 上的效果: https://www.bilibili.com/video/BV1hJGL6ZEgB https://www.bilibili.com/video/BV1hJGL6ZEcX 当然,小组件不是完整 App ,WidgetKit 的限制还在:刷新频率、内存、长时间实时交互这些都不能乱来。Await 不是要把小组件变成完整 App ,而是想把这些限制之内的空间变得更容易创作。 App Store: https://apps.apple.com/app/id6755678187 Website: https://awaitwidget.com 想听听大家怎么看: 如果做一个真实 iPhone 小组件的成本足够低,你会想给自己做一个什么样的小组件?

v2ex · 2026-05-25 13:05:38+08:00 · tech

大家好,我做了一个 iOS App ,叫 Await 。 它的出发点很简单:很多点子太小,不值得专门做成一个完整 App ,但如果能真的放到 iPhone 主屏上,又会变得挺有用。 比如我之前看到一张 ADHD Bingo 卡片:一个 5x5 的格子,每个格子是一件很小的日常任务,做完就点一下。它本来只是一张截图,但我觉得这不就是一个小组件该有的样子吗? 用 Codex + Await ,我大概一分半做出了一个可点击的基础版。再调几轮,加上手绘网格、荧光笔标记和每天零点重置,前后大概五分钟,就变成了一个真的可以放到主屏上的小组件。 Await 做的事情是:用 TypeScript 创建真实的 iPhone 小组件,不用打开 Xcode ,也不用自己配置 WidgetKit extension 。 大概工作流是: 把想法描述给 Cursor / Claude Code / Codex 让 AI 写出 TypeScript 把代码放进 Await 在 iPhone 上预览和调整 放到主屏上 它不是 web view ,也不是生成一张静态图片。Await 会把 TypeScript/TSX DSL 渲染成真实的小组件 view ,可以有状态、timeline 、intent 、网络请求、本地存储、文件、音乐、音频等能力。 另外我做了一个 custom panel 机制。代码里可以把一些参数标记成可调整项,比如文字、颜色、字号、开关、token 、数据源路径。Await 会在 App 里自动生成面板,而且面板和代码是同步的。 这个对 AI coding 很有用:AI 先搭结构,后面那些「颜色深一点」「字号大一号」「这个 token 换一下」之类的细节,就不用每次都让 AI 重写代码了。 我录了两个视频,能更直观看到它在 iPhone 上的效果: https://www.bilibili.com/video/BV1hJGL6ZEgB https://www.bilibili.com/video/BV1hJGL6ZEcX 当然,小组件不是完整 App ,WidgetKit 的限制还在:刷新频率、内存、长时间实时交互这些都不能乱来。Await 不是要把小组件变成完整 App ,而是想把这些限制之内的空间变得更容易创作。 App Store: https://apps.apple.com/app/id6755678187 Website: https://awaitwidget.com 想听听大家怎么看: 如果做一个真实 iPhone 小组件的成本足够低,你会想给自己做一个什么样的小组件?

v2ex · 2026-05-25 13:05:38+08:00 · tech

大家好,我做了一个 iOS App ,叫 Await 。 它的出发点很简单:很多点子太小,不值得专门做成一个完整 App ,但如果能真的放到 iPhone 主屏上,又会变得挺有用。 比如我之前看到一张 ADHD Bingo 卡片:一个 5x5 的格子,每个格子是一件很小的日常任务,做完就点一下。它本来只是一张截图,但我觉得这不就是一个小组件该有的样子吗? 用 Codex + Await ,我大概一分半做出了一个可点击的基础版。再调几轮,加上手绘网格、荧光笔标记和每天零点重置,前后大概五分钟,就变成了一个真的可以放到主屏上的小组件。 Await 做的事情是:用 TypeScript 创建真实的 iPhone 小组件,不用打开 Xcode ,也不用自己配置 WidgetKit extension 。 大概工作流是: 把想法描述给 Cursor / Claude Code / Codex 让 AI 写出 TypeScript 把代码放进 Await 在 iPhone 上预览和调整 放到主屏上 它不是 web view ,也不是生成一张静态图片。Await 会把 TypeScript/TSX DSL 渲染成真实的小组件 view ,可以有状态、timeline 、intent 、网络请求、本地存储、文件、音乐、音频等能力。 另外我做了一个 custom panel 机制。代码里可以把一些参数标记成可调整项,比如文字、颜色、字号、开关、token 、数据源路径。Await 会在 App 里自动生成面板,而且面板和代码是同步的。 这个对 AI coding 很有用:AI 先搭结构,后面那些「颜色深一点」「字号大一号」「这个 token 换一下」之类的细节,就不用每次都让 AI 重写代码了。 我录了两个视频,能更直观看到它在 iPhone 上的效果: https://www.bilibili.com/video/BV1hJGL6ZEgB https://www.bilibili.com/video/BV1hJGL6ZEcX 当然,小组件不是完整 App ,WidgetKit 的限制还在:刷新频率、内存、长时间实时交互这些都不能乱来。Await 不是要把小组件变成完整 App ,而是想把这些限制之内的空间变得更容易创作。 App Store: https://apps.apple.com/app/id6755678187 Website: https://awaitwidget.com 想听听大家怎么看: 如果做一个真实 iPhone 小组件的成本足够低,你会想给自己做一个什么样的小组件?

v2ex · 2026-05-25 12:15:41+08:00 · tech

大家好,我做了一个 iOS App ,叫 Await 。 它的出发点很简单:很多点子太小,不值得专门做成一个完整 App ,但如果能真的放到 iPhone 主屏上,又会变得挺有用。 比如我之前看到一张 ADHD Bingo 卡片:一个 5x5 的格子,每个格子是一件很小的日常任务,做完就点一下。它本来只是一张截图,但我觉得这不就是一个小组件该有的样子吗? 用 Codex + Await ,我大概一分半做出了一个可点击的基础版。再调几轮,加上手绘网格、荧光笔标记和每天零点重置,前后大概五分钟,就变成了一个真的可以放到主屏上的小组件。 Await 做的事情是:用 TypeScript 创建真实的 iPhone 小组件,不用打开 Xcode ,也不用自己配置 WidgetKit extension 。 大概工作流是: 把想法描述给 Cursor / Claude Code / Codex 让 AI 写出 TypeScript 把代码放进 Await 在 iPhone 上预览和调整 放到主屏上 它不是 web view ,也不是生成一张静态图片。Await 会把 TypeScript/TSX DSL 渲染成真实的小组件 view ,可以有状态、timeline 、intent 、网络请求、本地存储、文件、音乐、音频等能力。 另外我做了一个 custom panel 机制。代码里可以把一些参数标记成可调整项,比如文字、颜色、字号、开关、token 、数据源路径。Await 会在 App 里自动生成面板,而且面板和代码是同步的。 这个对 AI coding 很有用:AI 先搭结构,后面那些「颜色深一点」「字号大一号」「这个 token 换一下」之类的细节,就不用每次都让 AI 重写代码了。 我录了两个视频,能更直观看到它在 iPhone 上的效果: https://www.bilibili.com/video/BV1hJGL6ZEgB https://www.bilibili.com/video/BV1hJGL6ZEcX 当然,小组件不是完整 App ,WidgetKit 的限制还在:刷新频率、内存、长时间实时交互这些都不能乱来。Await 不是要把小组件变成完整 App ,而是想把这些限制之内的空间变得更容易创作。 App Store: https://apps.apple.com/app/id6755678187 Website: https://awaitwidget.com 想听听大家怎么看: 如果做一个真实 iPhone 小组件的成本足够低,你会想给自己做一个什么样的小组件?

v2ex · 2026-05-25 12:15:41+08:00 · tech

大家好,我做了一个 iOS App ,叫 Await 。 它的出发点很简单:很多点子太小,不值得专门做成一个完整 App ,但如果能真的放到 iPhone 主屏上,又会变得挺有用。 比如我之前看到一张 ADHD Bingo 卡片:一个 5x5 的格子,每个格子是一件很小的日常任务,做完就点一下。它本来只是一张截图,但我觉得这不就是一个小组件该有的样子吗? 用 Codex + Await ,我大概一分半做出了一个可点击的基础版。再调几轮,加上手绘网格、荧光笔标记和每天零点重置,前后大概五分钟,就变成了一个真的可以放到主屏上的小组件。 Await 做的事情是:用 TypeScript 创建真实的 iPhone 小组件,不用打开 Xcode ,也不用自己配置 WidgetKit extension 。 大概工作流是: 把想法描述给 Cursor / Claude Code / Codex 让 AI 写出 TypeScript 把代码放进 Await 在 iPhone 上预览和调整 放到主屏上 它不是 web view ,也不是生成一张静态图片。Await 会把 TypeScript/TSX DSL 渲染成真实的小组件 view ,可以有状态、timeline 、intent 、网络请求、本地存储、文件、音乐、音频等能力。 另外我做了一个 custom panel 机制。代码里可以把一些参数标记成可调整项,比如文字、颜色、字号、开关、token 、数据源路径。Await 会在 App 里自动生成面板,而且面板和代码是同步的。 这个对 AI coding 很有用:AI 先搭结构,后面那些「颜色深一点」「字号大一号」「这个 token 换一下」之类的细节,就不用每次都让 AI 重写代码了。 我录了两个视频,能更直观看到它在 iPhone 上的效果: https://www.bilibili.com/video/BV1hJGL6ZEgB https://www.bilibili.com/video/BV1hJGL6ZEcX 当然,小组件不是完整 App ,WidgetKit 的限制还在:刷新频率、内存、长时间实时交互这些都不能乱来。Await 不是要把小组件变成完整 App ,而是想把这些限制之内的空间变得更容易创作。 App Store: https://apps.apple.com/app/id6755678187 Website: https://awaitwidget.com 想听听大家怎么看: 如果做一个真实 iPhone 小组件的成本足够低,你会想给自己做一个什么样的小组件?

v2ex · 2026-05-25 12:00:33+08:00 · tech

大家好,我做了一个 iOS App ,叫 Await 。 它的出发点很简单:很多点子太小,不值得专门做成一个完整 App ,但如果能真的放到 iPhone 主屏上,又会变得挺有用。 比如我之前看到一张 ADHD Bingo 卡片:一个 5x5 的格子,每个格子是一件很小的日常任务,做完就点一下。它本来只是一张截图,但我觉得这不就是一个小组件该有的样子吗? 用 Codex + Await ,我大概一分半做出了一个可点击的基础版。再调几轮,加上手绘网格、荧光笔标记和每天零点重置,前后大概五分钟,就变成了一个真的可以放到主屏上的小组件。 Await 做的事情是:用 TypeScript 创建真实的 iPhone 小组件,不用打开 Xcode ,也不用自己配置 WidgetKit extension 。 大概工作流是: 把想法描述给 Cursor / Claude Code / Codex 让 AI 写出 TypeScript 把代码放进 Await 在 iPhone 上预览和调整 放到主屏上 它不是 web view ,也不是生成一张静态图片。Await 会把 TypeScript/TSX DSL 渲染成真实的小组件 view ,可以有状态、timeline 、intent 、网络请求、本地存储、文件、音乐、音频等能力。 另外我做了一个 custom panel 机制。代码里可以把一些参数标记成可调整项,比如文字、颜色、字号、开关、token 、数据源路径。Await 会在 App 里自动生成面板,而且面板和代码是同步的。 这个对 AI coding 很有用:AI 先搭结构,后面那些「颜色深一点」「字号大一号」「这个 token 换一下」之类的细节,就不用每次都让 AI 重写代码了。 我录了两个视频,能更直观看到它在 iPhone 上的效果: https://www.bilibili.com/video/BV1hJGL6ZEgB https://www.bilibili.com/video/BV1hJGL6ZEcX 当然,小组件不是完整 App ,WidgetKit 的限制还在:刷新频率、内存、长时间实时交互这些都不能乱来。Await 不是要把小组件变成完整 App ,而是想把这些限制之内的空间变得更容易创作。 App Store: https://apps.apple.com/app/id6755678187 Website: https://awaitwidget.com 想听听大家怎么看: 如果做一个真实 iPhone 小组件的成本足够低,你会想给自己做一个什么样的小组件?

v2ex · 2026-05-25 10:49:39+08:00 · tech

后悔药 Rue.js 玩了都年前端,捣鼓了很长一段时间的项目,好玩。 Rue.js (发音 /ruː/,中文名后悔药.js )是一个面向 JSX/TSX 的轻量前端框架,追求简单直观的开发体验,同时提供默认 Block / Vapor 渲染路径、路由、基于 Rust / WebAssembly 的运行时扩展,以及 Rust 实现的响应式系统与原生 DOM 编译能力。 它适合希望保留 React 风格 JSX 开发方式,同时获得 Vue 式响应式 API 与更贴近真实 DOM 更新模型的项目。 相关链接 https://github.com/hunzhiwange/ruejs https://ruejs.huododo.com/ 特性 轻量、直观的 API ,适合渐进式接入 默认 Block / Vapor 渲染路径,围绕真实 DOM 做最小更新 JSX / TSX 一等支持,无需额外模板语法 类似 Vue 的响应式 API ,支持 ref 、 reactive 、 computed 提供基于 Rust / WebAssembly 的运行时,可扩展 Vapor 渲染能力 提供 Rust 实现的响应式系统,覆盖信号、依赖追踪与调度能力 提供 Rust / Wasm 原生 DOM 编译器,将 JSX 转换为更贴近真实 DOM 的产物 官方路由、设计组件库与构建插件协同工作 提供 @rue-js/runtime-vapor 与 @rue-js/swc-plugin-rue Rust 侧核心能力 快速开始 Rue 提供官方脚手架,也支持接入现有 Vite 项目。 创建新项目 前置条件:Node.js >= 22.12.0 pnpm create rue@latest npm create rue@latest bun create rue@latest yarn dlx create-rue@latest 进入项目后安装依赖并启动开发服务器: cd your-project-name pnpm install pnpm run dev 接入现有项目 pnpm add @rue-js/rue @rue-js/router 在 Vite 配置中启用 Rue 的 JSX: // vite.config.tsimport { defineConfig } from 'vite' export default defineConfig({esbuild: { jsxImportSource: '@rue-js/rue' },}) 示例 下面是一个最小 Rue 应用示例: import { type FC, ref, useApp, useError } from '@rue-js/rue' const Counter: FC = () => {const count = ref(0) return <button onClick={() => count.value++}>点击次数:{count.value}</button>} useError({ overlay: true, console: true })useApp(Counter).mount('#app') 如果你需要页面级路由,可以继续接入 @rue-js/router : import { useComponent } from '@rue-js/rue'import { createRouter } from '@rue-js/router' export default createRouter({history: 'hash',routes: [ { path: '/', component: useComponent(() => import('./pages/Home')) }, { path: '/about', component: useComponent(() => import('./pages/About')) },],})

v2ex · 2026-05-25 10:49:39+08:00 · tech

后悔药 Rue.js 玩了都年前端,捣鼓了很长一段时间的项目,好玩。 Rue.js (发音 /ruː/,中文名后悔药.js )是一个面向 JSX/TSX 的轻量前端框架,追求简单直观的开发体验,同时提供默认 Block / Vapor 渲染路径、路由、基于 Rust / WebAssembly 的运行时扩展,以及 Rust 实现的响应式系统与原生 DOM 编译能力。 它适合希望保留 React 风格 JSX 开发方式,同时获得 Vue 式响应式 API 与更贴近真实 DOM 更新模型的项目。 相关链接 https://github.com/hunzhiwange/ruejs https://ruejs.huododo.com/ 特性 轻量、直观的 API ,适合渐进式接入 默认 Block / Vapor 渲染路径,围绕真实 DOM 做最小更新 JSX / TSX 一等支持,无需额外模板语法 类似 Vue 的响应式 API ,支持 ref 、 reactive 、 computed 提供基于 Rust / WebAssembly 的运行时,可扩展 Vapor 渲染能力 提供 Rust 实现的响应式系统,覆盖信号、依赖追踪与调度能力 提供 Rust / Wasm 原生 DOM 编译器,将 JSX 转换为更贴近真实 DOM 的产物 官方路由、设计组件库与构建插件协同工作 提供 @rue-js/runtime-vapor 与 @rue-js/swc-plugin-rue Rust 侧核心能力 快速开始 Rue 提供官方脚手架,也支持接入现有 Vite 项目。 创建新项目 前置条件:Node.js >= 22.12.0 pnpm create rue@latest npm create rue@latest bun create rue@latest yarn dlx create-rue@latest 进入项目后安装依赖并启动开发服务器: cd your-project-name pnpm install pnpm run dev 接入现有项目 pnpm add @rue-js/rue @rue-js/router 在 Vite 配置中启用 Rue 的 JSX: // vite.config.tsimport { defineConfig } from 'vite' export default defineConfig({esbuild: { jsxImportSource: '@rue-js/rue' },}) 示例 下面是一个最小 Rue 应用示例: import { type FC, ref, useApp, useError } from '@rue-js/rue' const Counter: FC = () => {const count = ref(0) return <button onClick={() => count.value++}>点击次数:{count.value}</button>} useError({ overlay: true, console: true })useApp(Counter).mount('#app') 如果你需要页面级路由,可以继续接入 @rue-js/router : import { useComponent } from '@rue-js/rue'import { createRouter } from '@rue-js/router' export default createRouter({history: 'hash',routes: [ { path: '/', component: useComponent(() => import('./pages/Home')) }, { path: '/about', component: useComponent(() => import('./pages/About')) },],})

v2ex · 2026-05-25 10:42:10+08:00 · tech

后悔药 Rue.js 玩了都年前端,捣鼓了很长一段时间的项目,好玩。 Rue.js (发音 /ruː/,中文名后悔药.js )是一个面向 JSX/TSX 的轻量前端框架,追求简单直观的开发体验,同时提供默认 Block / Vapor 渲染路径、路由、基于 Rust / WebAssembly 的运行时扩展,以及 Rust 实现的响应式系统与原生 DOM 编译能力。 它适合希望保留 React 风格 JSX 开发方式,同时获得 Vue 式响应式 API 与更贴近真实 DOM 更新模型的项目。 相关链接 https://github.com/hunzhiwange/ruejs https://ruejs.huododo.com/ 特性 轻量、直观的 API ,适合渐进式接入 默认 Block / Vapor 渲染路径,围绕真实 DOM 做最小更新 JSX / TSX 一等支持,无需额外模板语法 类似 Vue 的响应式 API ,支持 ref 、 reactive 、 computed 提供基于 Rust / WebAssembly 的运行时,可扩展 Vapor 渲染能力 提供 Rust 实现的响应式系统,覆盖信号、依赖追踪与调度能力 提供 Rust / Wasm 原生 DOM 编译器,将 JSX 转换为更贴近真实 DOM 的产物 官方路由、设计组件库与构建插件协同工作 提供 @rue-js/runtime-vapor 与 @rue-js/swc-plugin-rue Rust 侧核心能力 快速开始 Rue 提供官方脚手架,也支持接入现有 Vite 项目。 创建新项目 前置条件:Node.js >= 22.12.0 pnpm create rue@latest npm create rue@latest bun create rue@latest yarn dlx create-rue@latest 进入项目后安装依赖并启动开发服务器: cd your-project-name pnpm install pnpm run dev 接入现有项目 pnpm add @rue-js/rue @rue-js/router 在 Vite 配置中启用 Rue 的 JSX: // vite.config.tsimport { defineConfig } from 'vite' export default defineConfig({esbuild: { jsxImportSource: '@rue-js/rue' },}) 示例 下面是一个最小 Rue 应用示例: import { type FC, ref, useApp, useError } from '@rue-js/rue' const Counter: FC = () => {const count = ref(0) return <button onClick={() => count.value++}>点击次数:{count.value}</button>} useError({ overlay: true, console: true })useApp(Counter).mount('#app') 如果你需要页面级路由,可以继续接入 @rue-js/router : import { useComponent } from '@rue-js/rue'import { createRouter } from '@rue-js/router' export default createRouter({history: 'hash',routes: [ { path: '/', component: useComponent(() => import('./pages/Home')) }, { path: '/about', component: useComponent(() => import('./pages/About')) },],})

v2ex · 2026-05-25 09:58:19+08:00 · tech

后悔药 Rue.js 玩了都年前端,捣鼓了很长一段时间的项目,好玩。 Rue.js (发音 /ruː/,中文名后悔药.js )是一个面向 JSX/TSX 的轻量前端框架,追求简单直观的开发体验,同时提供默认 Block / Vapor 渲染路径、路由、基于 Rust / WebAssembly 的运行时扩展,以及 Rust 实现的响应式系统与原生 DOM 编译能力。 它适合希望保留 React 风格 JSX 开发方式,同时获得 Vue 式响应式 API 与更贴近真实 DOM 更新模型的项目。 相关链接 https://github.com/hunzhiwange/ruejs https://ruejs.huododo.com/ 特性 轻量、直观的 API ,适合渐进式接入 默认 Block / Vapor 渲染路径,围绕真实 DOM 做最小更新 JSX / TSX 一等支持,无需额外模板语法 类似 Vue 的响应式 API ,支持 ref 、 reactive 、 computed 提供基于 Rust / WebAssembly 的运行时,可扩展 Vapor 渲染能力 提供 Rust 实现的响应式系统,覆盖信号、依赖追踪与调度能力 提供 Rust / Wasm 原生 DOM 编译器,将 JSX 转换为更贴近真实 DOM 的产物 官方路由、设计组件库与构建插件协同工作 提供 @rue-js/runtime-vapor 与 @rue-js/swc-plugin-rue Rust 侧核心能力 快速开始 Rue 提供官方脚手架,也支持接入现有 Vite 项目。 创建新项目 前置条件:Node.js >= 22.12.0 pnpm create rue@latest npm create rue@latest bun create rue@latest yarn dlx create-rue@latest 进入项目后安装依赖并启动开发服务器: cd your-project-name pnpm install pnpm run dev 接入现有项目 pnpm add @rue-js/rue @rue-js/router 在 Vite 配置中启用 Rue 的 JSX: // vite.config.tsimport { defineConfig } from 'vite' export default defineConfig({esbuild: { jsxImportSource: '@rue-js/rue' },}) 示例 下面是一个最小 Rue 应用示例: import { type FC, ref, useApp, useError } from '@rue-js/rue' const Counter: FC = () => {const count = ref(0) return <button onClick={() => count.value++}>点击次数:{count.value}</button>} useError({ overlay: true, console: true })useApp(Counter).mount('#app') 如果你需要页面级路由,可以继续接入 @rue-js/router : import { useComponent } from '@rue-js/rue'import { createRouter } from '@rue-js/router' export default createRouter({history: 'hash',routes: [ { path: '/', component: useComponent(() => import('./pages/Home')) }, { path: '/about', component: useComponent(() => import('./pages/About')) },],})

v2ex · 2026-05-25 09:47:30+08:00 · tech

后悔药 Rue.js 玩了都年前端,捣鼓了很长一段时间的项目,好玩。 Rue.js (发音 /ruː/,中文名后悔药.js )是一个面向 JSX/TSX 的轻量前端框架,追求简单直观的开发体验,同时提供默认 Block / Vapor 渲染路径、路由、基于 Rust / WebAssembly 的运行时扩展,以及 Rust 实现的响应式系统与原生 DOM 编译能力。 它适合希望保留 React 风格 JSX 开发方式,同时获得 Vue 式响应式 API 与更贴近真实 DOM 更新模型的项目。 相关链接 https://github.com/hunzhiwange/ruejs https://ruejs.huododo.com/ 特性 轻量、直观的 API ,适合渐进式接入 默认 Block / Vapor 渲染路径,围绕真实 DOM 做最小更新 JSX / TSX 一等支持,无需额外模板语法 类似 Vue 的响应式 API ,支持 ref 、 reactive 、 computed 提供基于 Rust / WebAssembly 的运行时,可扩展 Vapor 渲染能力 提供 Rust 实现的响应式系统,覆盖信号、依赖追踪与调度能力 提供 Rust / Wasm 原生 DOM 编译器,将 JSX 转换为更贴近真实 DOM 的产物 官方路由、设计组件库与构建插件协同工作 提供 @rue-js/runtime-vapor 与 @rue-js/swc-plugin-rue Rust 侧核心能力 快速开始 Rue 提供官方脚手架,也支持接入现有 Vite 项目。 创建新项目 前置条件:Node.js >= 22.12.0 pnpm create rue@latest npm create rue@latest bun create rue@latest yarn dlx create-rue@latest 进入项目后安装依赖并启动开发服务器: cd your-project-name pnpm install pnpm run dev 接入现有项目 pnpm add @rue-js/rue @rue-js/router 在 Vite 配置中启用 Rue 的 JSX: // vite.config.tsimport { defineConfig } from 'vite' export default defineConfig({esbuild: { jsxImportSource: '@rue-js/rue' },}) 示例 下面是一个最小 Rue 应用示例: import { type FC, ref, useApp, useError } from '@rue-js/rue' const Counter: FC = () => {const count = ref(0) return <button onClick={() => count.value++}>点击次数:{count.value}</button>} useError({ overlay: true, console: true })useApp(Counter).mount('#app') 如果你需要页面级路由,可以继续接入 @rue-js/router : import { useComponent } from '@rue-js/rue'import { createRouter } from '@rue-js/router' export default createRouter({history: 'hash',routes: [ { path: '/', component: useComponent(() => import('./pages/Home')) }, { path: '/about', component: useComponent(() => import('./pages/About')) },],})