OpenReplay 博客
在浏览器中使用 Geometric.js 进行真实几何运算
Geometric.js 为浏览器图表和地图提供多边形相交、边界框、点在多边形内测试和路径插值,适用于 SVG 与 Canvas。
3种非TypeScript的类型系统
比较 JSDoc + @ts-check、ReScript 和 Flow 作为 JavaScript 的 TypeScript 替代方案,涵盖类型安全、构建步骤和采用现状。
MDN 现已成为 MCP 服务器
MDN 的 MCP 服务器让 AI 编码代理直接获取搜索、文档和浏览器兼容性数据,并介绍安装步骤与隐私注意事项。
bunx 是什么以及何时使用它
bunx 详解:Bun 如何无需全局安装运行 npm 二进制文件,何时使用 --bun,以及何时仍该选 npx。
如何在 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时区,正确存储与显示日期。