OpenReplay 博客
修复服务端渲染应用中的 “window is not defined” 错误
通过挂载钩子、typeof window 检查和仅客户端导入,修复服务端渲染应用中的 window is not defined 错误。
面向 Web 开发者的提示注入(Prompt Injection)详解
面向Web开发者的提示词注入解析:为什么没有提示层修复,以及如何限制间接攻击、不可信输出和工具风险。
初探 Gea:一个编译器优先的 UI 框架
Gea 是一个以编译器为先的 JavaScript UI 框架,使用 JSX、类 store 和直接 DOM 补丁。文章分析其 props 模型、体积和成熟度。
从零开始编写 WordPress 插件
从零构建 WordPress 插件,涵盖钩子、启用和停用钩子、设置页、数据清理、转义以及安全保存。
如何修复 React 中的 Invalid Hook Call 错误
通过检查堆栈、Rules of Hooks、重复的 React 副本和 react-dom 版本不匹配,修复 React invalid hook call 错误。
在 AI 编码 Agent 中使用 Git Worktrees
使用 git worktrees 配合 AI 编码代理,隔离分支、避免文件冲突,并安全管理端口、数据库和合并。
Git Worktree 详解:何时使用、为何使用
解析 Git worktree:与 stash 和第二个克隆的区别、适用场景,以及管理它们的常用命令。
不稳定网络下的 3 种 SSH 替代方案
比较 Mosh、Eternal Terminal 和 autossh 处理不稳定 SSH 连接:UDP、TCP 重新连接、服务器需求以及 tmux 搭配。
如何统计 Token 数量并估算 LLM API 成本
使用 OpenAI、Claude、Gemini 和 Llama 的 tokenizer 精确计算 LLM token,并估算 API 成本、上下文窗口和计费。
ECMAScript 2026 新特性一览
ES2026 为 JavaScript 增加七项新功能:Array.fromAsync、Math.sumPrecise、Uint8Array 的 base64 和 hex 方法、JSON.parse 源文本访问,以及 getOrInsert。
如何检查 WCAG 的颜色对比度
了解如何用合适的工具和标准检查WCAG颜色对比度,涵盖文本、UI组件、焦点指示和链接。
如何在上传前生成图片缩略图
上传前创建图片缩略图:FileReader 预览、Canvas toBlob 缩放、FormData 上传和 multer 字段匹配。
VuePress 与 VitePress:该选哪一个?
VuePress 与 VitePress 的 Vue 文档对比:维护状态、开发速度、自定义能力,以及何时选择 VitePress 或 Docusaurus。
ORM 何时是错误的工具
当 ORM 成为瓶颈时,可用原生 SQL 处理 N+1 查询、窗口函数、CTE、批量写入和安全的参数化。
如何为 Vue 应用添加视频播放功能
为Vue应用添加视频播放:原生HTML5 video、可复用组件或Video.js,支持HLS、字幕、自动播放和清理。
超越 commit 和 push 的 5 个 Git 命令
超越 commit 和 push 的 5 个 Git 命令:stash、reflog、cherry-pick、rebase -i 和 bisect,用于恢复、整理历史和查找 bug。
如何创建阅读进度条
使用 JavaScript 或 CSS 滚动驱动动画创建阅读进度条,涵盖正确的滚动计算、性能优化和无障碍处理。
在开发环境中用命名 URL 取代端口号
使用 .localhost、反向代理或 portless 将 localhost 端口替换为命名 URL,避免端口冲突、Cookie 串扰和标签页弄错。
使用 preact/compat 在 Preact 中运行 React 库
使用 preact/compat 在 Preact 中运行 React 库,并提供 Vite、webpack、Rollup、Jest、TypeScript 的 alias 配置及常见故障说明。
Deno 权限模型详解
Deno 权限模型解析:allow 与 deny 标志、作用范围、deno.json 权限集、Permissions API,以及常见安全陷阱。
使用 ESLint 对 TypeScript 进行 Lint 检查
TypeScript 的 ESLint 10 flat config:用 typescript-eslint 配置,开启 projectService 类型感知 lint,并正确接入 Prettier。
深入解析 JavaScript 的 Error.isError()
Error.isError() 可跨 realm 判断真实的 JavaScript 错误,解释它为何优于 instanceof Error,并介绍安全回退用法。
如何修复 React 中的 “Maximum Update Depth Exceeded”
通过一行修复解决 React 的 maximum update depth exceeded 错误,涵盖渲染循环、effect 依赖、处理器和节流。
深入理解 N+1 查询问题
解析N+1查询问题,涵盖Rails、Django、Hibernate和Laravel的解决方案,以及eager loading、JOIN和检测方法。