OpenReplay 博客
如何在 CSS 中截断文本
用CSS截断文本:单行用text-overflow: ellipsis,多行用line-clamp,并包含flex和grid中的常见修复。
5 个对开发者实用的 Bookmarklet
面向开发者的5个实用书签脚本:实时编辑页面、调试布局、显示密码字段、取色,以及注入 eruda 移动端 DevTools。
使用 Vitest 测试 Svelte 5 组件
用 Vitest 测试 Svelte 5 组件,涵盖 mount、testing-library 和 browser mode,并说明 runes、effects 与 snippets 的正确配置。
npm Workspaces 入门指南
了解 npm workspaces 的设置、命令和限制:管理 monorepo、链接兄弟包,并判断何时需要 Turborepo 或 Nx。
使用 CODEOWNERS 实现代码自动审查
配置 GitHub CODEOWNERS,避免静默失效,并通过正确的路径规则、权限和分支保护强制代码审查。
如何备份 WordPress 站点
使用 mysqldump、tar、cron 和 rclone 备份 WordPress 站点。涵盖文件、MySQL 数据库、异地存储和恢复测试。
使用 Difftastic 审查 AI 生成的代码
使用 Difftastic 通过结构化 diff 审查 AI 生成代码,接入 git,并从格式化噪音中分离出行为变化。
3个JavaScript陷阱详解
解析 3 个 JavaScript 陷阱:浮点运算、NaN 检查和循环中的 await,并给出对应的正确修复方法。
在 React Server Components 中获取数据
在 React Server Components 中用 async 函数获取数据,理解 Next.js 15/16 的缓存默认值,并用 Promise.all 避免请求瀑布。
使用 BroadcastChannel 实现浏览器标签页同步
BroadcastChannel可让标签页实时同步,涵盖structured clone消息、清理、降级方案,以及认证、购物车和主题状态的实用模式。
使用文本扩展器处理 Git、PR 和 AI 提示词
面向 Git、PR 和 AI 提示词的 Espanso 片段:用 shell、剪贴板和光标提示构建上下文感知文本扩展。
如何在不使用 JavaScript Hack 的情况下为 display: none 添加动画
用 CSS 通过 allow-discrete 和 @starting-style 为 display none 添加动画,并说明 dialog、popover 的 overlay 处理和浏览器支持。
TypeScript `satisfies` 操作符实用指南
用配置示例讲解 TypeScript 的 satisfies 运算符,保留窄类型推断,并说明何时用它替代 as 或冒号类型注解。
JSPI 详解:JavaScript 与 Wasm 之间更优雅的桥梁
JSPI 连接 JavaScript 和 WebAssembly,让同步 Wasm 调用 fetch 等基于 Promise 的 API,并介绍 Suspending、promising 和浏览器支持。
使用 caffeinate 让你的 Mac 在夜间 Agent 运行期间保持唤醒状态
在 Mac 上用 caffeinate 让 Claude Code、Codex 或构建任务整夜保持运行,用 pmset 验证 assertion,并了解合盖限制。
5个提升笔记质量的Obsidian技巧
5个Obsidian笔记技巧:MOC、Dataview、Bases、Canvas、Mermaid、复盘仪表板与Git同步,让Markdown库更易复用。
集成测试与端到端测试
Web应用的集成测试与端到端测试对比:清晰定义、JS工具,以及何时使用Vitest、MSW、Playwright或Cypress。
JavaScript 终于学会了自我清理
JavaScript 的 Explicit Resource Management 使用 using、await using、DisposableStack 和 SuppressedError,确定性清理文件、锁、socket 和连接。
关系型数据库常见设计错误
避开Postgres和MySQL中的常见关系型数据库设计错误:约束、主键、索引以及正确的时间戳存储。
在 JavaScript 中处理时区而不抓狂
用UTC时间点、IANA时区ID、Intl.DateTimeFormat、Temporal和DST安全规则处理JavaScript时区,正确存储与显示日期。
Node.js 双格式 CJS/ESM 构建的终结
Node.js 现已支持 require(esm),让 ESM-only 成为许多库的默认选择。了解何时放弃 CJS、避免 top-level await 并安全迁移。
大型项目的 TypeScript 最佳实践
大型 TypeScript 项目实践:strict 模式、noUncheckedIndexedAccess、exactOptionalPropertyTypes、生成类型、运行时校验与 CI 约束。
使用 Bun 内置 Redis 客户端
Bun 内置 Redis 客户端指南:连接、类型化命令、Pub/Sub、自动流水线、限流,以及何时改用 ioredis。
何时使用 CSS `if()` 与容器样式查询
对比 CSS if() 和 container style queries:何时使用、语法陷阱、range syntax 以及 2026 年浏览器支持。