用 Screaming Frog 自定义提取规则批量审计页面标题与 Meta 描述
pren 发布于 2026-09-21
页面标题(Title Tag)和 Meta 描述是搜索引擎理解页面内容的第一入口,也是影响点击率的关键因素。当一个网站拥有成百上千个页面时,逐页检查标题和描述几乎不可能靠人工完成。Screaming Frog SEO Spider 的 自定义提取(Custom Extractio...
阅读(42)评论(0)赞 (0)
pren 发布于 2026-09-21
页面标题(Title Tag)和 Meta 描述是搜索引擎理解页面内容的第一入口,也是影响点击率的关键因素。当一个网站拥有成百上千个页面时,逐页检查标题和描述几乎不可能靠人工完成。Screaming Frog SEO Spider 的 自定义提取(Custom Extractio...
阅读(42)评论(0)赞 (0)
pren 发布于 2026-09-21
市面上的 SEO 审计工具不少,但当你需要针对特定业务逻辑做定制化检查——比如验证某个 SPA 站点的预渲染输出、监控竞品站点的标题变更、或者批量检查上千个 URL 的 canonical 标签——现成工具往往力不从心。自己动手写一个 SEO 爬虫,反而更灵活、更可控。 本文将从...
阅读(44)评论(0)赞 (0)
pren 发布于 2026-09-21
图片是网站流量的重要入口。Google 图片搜索每天承载着数十亿次查询,而绝大多数网站却对图片 SEO 几乎不做任何技术处理——图片以 PNG 原图直接上传、没有懒加载、Sitemap 中完全不提图片。这篇文章从三个最核心的技术层面,讲清楚图片 SEO 到底该怎么做。 一、为什么...
阅读(71)评论(0)赞 (0)
pren 发布于 2026-09-21
网站从 HTTP 迁移到 HTTPS,早已不是“可选项”,而是搜索引擎、浏览器和用户信任的共同底线。但很多站长在完成证书部署、开启 HTTPS 后,却发现排名不升反降,流量出现波动甚至明显下滑。问题往往不在 HTTPS 本身,而在于迁移过程中留下的技术债:301 跳转链路混乱、H...
阅读(44)评论(0)赞 (0)
pren 发布于 2026-09-21
在 TypeScript 的日常开发中,我们经常需要定义一组相关的常量值,比如状态码、方向、角色类型等。传统上,enum 是最直观的选择,但随着项目规模的增长和类型系统的深入使用,enum 的一些固有缺陷逐渐暴露出来。与此同时,const 断言和联合类型等特性提供了更灵活、更安全...
阅读(49)评论(0)赞 (0)
pren 发布于 2026-09-21
为什么要手写声明文件 在 TypeScript 项目中引入一个没有类型定义的 npm 包时,编译器会抛出 TS7016 错误:“Could not find a declaration file for module 'xxx'”。这通常发生在以下几种场景: 包本...
阅读(45)评论(0)赞 (0)
pren 发布于 2026-09-21
表单验证是前端开发中无法回避的一环。传统做法通常是在提交时手动检查字段、编写大量 ifelse,或者依赖某个 UI 库自带的校验规则。这些方案能跑通,但有一个共同的痛点:类型定义和运行时校验是两套东西。你在 TypeScript 里声明了一个 User 接口,又在表单验证逻辑里重...
阅读(47)评论(0)赞 (0)
pren 发布于 2026-09-21
在 TypeScript 的类型系统中,any 往往是最容易被滥用的类型。它像一扇敞开的大门,允许任何值进入,也允许任何操作发生。这种“自由”带来的代价是类型安全的彻底丧失。幸运的是,TypeScript 提供了两个更精确、更安全的替代者:unknown 和 never。理解它们...
阅读(57)评论(0)赞 (0)
pren 发布于 2026-09-21
在 Node.js 和前端开发中,EventEmitter 是一种非常常见的设计模式。它允许对象通过事件订阅和发布来进行解耦通信。Node.js 内置了 events 模块,浏览器中也有 EventTarget,但它们都有一个共同的痛点:类型不安全。你可以在 emit 时传错参数...
阅读(45)评论(0)赞 (0)
pren 发布于 2026-09-21
随着前端工程规模的不断扩大,Monorepo 已经成为管理多包项目的标准方案。无论是使用 Turborepo、Nx 还是 pnpm workspace,我们都会面临一个共同的挑战:如何在多个包之间高效、可靠地共享 TypeScript 类型定义? 类型定义是 TypeScript...
阅读(45)评论(0)赞 (0)