OpenReplay 博客
永远不应该缓存的内容
不要缓存用户专属数据、认证响应、JWT 和敏感页面。了解如何安全使用 no-store、private 和 bfcache。
审计 GitHub Workflows 的安全风险
审计 GitHub Actions 的令牌权限、脚本注入、pull_request_target 风险、动作固定、自托管 runner 和 OIDC。
如何为 Electron 应用添加身份验证
在 Electron 应用中添加身份验证:OAuth 2.0 PKCE、系统浏览器登录、深链接或 loopback 重定向,以及 safeStorage 安全保存令牌。
Next.js 的五种替代方案
2026年可替代Next.js的5种框架:React Router v7、Astro 5、SvelteKit、Nuxt 4 和 TanStack Start。
为 JavaScript 项目选择静态站点生成器
比较 Astro 6、Eleventy 3、Next.js 16、Nuxt 4 和 SvelteKit,选择适合 JavaScript 项目的静态站点生成器。
使用 prefers-reduced-motion 实现无障碍动画
使用 prefers-reduced-motion 通过 CSS、JavaScript 和 Motion.dev 安全减少动画,并了解测试方法与 WCAG 指南。
使用 CSS all: unset 移除原生元素样式
使用 all: unset 清除 CSS 原生样式,重置按钮和表单控件,并恢复 focus-visible 可访问性。
你应该从 npm 切换到 pnpm 吗?
要从 npm 切换到 pnpm 吗?比较依赖隔离、磁盘节省、工作区协作和 pnpm 11 的构建脚本审批。
如何检测浏览器标签页变为非活动状态
使用 Page Visibility API 检测浏览器标签页何时变为非活动状态。借助 visibilitychange 暂停轮询、媒体播放和分析跟踪。
Chrome 扩展 Manifest V3 详解
解析 Manifest V3:service worker、declarativeNetRequest、chrome.action、Offscreen API,以及为何移除 MV2 后台页面和远程代码。
React Compiler 与手动 Memoization 对比
React Compiler 与手动记忆化:了解 React.memo、useMemo 和 useCallback 何时自动生效,以及何时仍需手动控制。
智能体浏览器入门
Agentic浏览器正在改变Web应用。了解它们与Selenium的区别、语义化HTML的重要性,以及开发者需要应对的安全风险。
如何在浏览器中持久化表单状态
用 localStorage、sessionStorage 或 IndexedDB 在浏览器中持久保存表单状态。了解自动保存、恢复字段和安全清除数据。
使用 Knip 清理无用文件和依赖
Knip可检测 JavaScript 和 TypeScript 项目中的未使用文件、导出和依赖项,并支持自动修复与 CI 清理。
使用 Scheduler API 在浏览器中处理后台任务
使用 Scheduler API 通过 scheduler.postTask() 和 scheduler.yield() 优先安排主线程任务,并说明支持检测与降级方案。
Git Stash 完全指南
Git stash命令、pop与apply区别、冲突处理、未跟踪文件,以及无需提交即可保存和恢复工作的最佳做法。
使用 Node Corepack 管理包管理器
Node Corepack 介绍如何固定 Yarn 和 pnpm 的包管理器版本,并说明 Node.js 25 变化、CI 配置、Docker 和离线使用。
使用 CSS scroll-behavior 实现平滑滚动
使用CSS的scroll-behavior: smooth实现锚点平滑滚动,借助scroll-margin-top避免固定头部遮挡,并兼顾无障碍体验。
如何重置 WordPress 管理员密码
通过仪表盘、忘记密码链接、WP-CLI或phpMyAdmin重置WordPress管理员密码,并了解恢复后安全检查步骤。
设计令牌(Design Tokens)简明入门
了解设计令牌的含义、原始令牌与语义令牌的区别,以及 CSS 变量和 Style Dictionary 的作用。
Svelte 开发最佳实践
Svelte 5 实用规范:$state、$derived、context 和 SvelteKit 数据加载,以及 keyed each 和现代语法的要点。
使用 PlanetScale 构建可扩展的 MySQL 数据库
PlanetScale用于可扩展MySQL数据库:基于Vitess的扩展、数据库分支、deploy request和无阻塞模式迁移。
如何修复 npm 中的 EACCES:Permission Denied 错误
在 macOS 和 Linux 上修复 npm EACCES permission denied,可用 nvm、用户拥有的全局 prefix 或 npx,避免 sudo。
在 Node.js 中跨异步调用保持上下文
使用 AsyncLocalStorage 在 Node.js 异步调用中保持请求 ID、用户 ID 和租户数据。了解 run() 与 getStore() 的用法。