SEO 百科
Angular
本页目录
Angular
Angular 是一套前端框架,由 Google 维护,用来搭建大型网页应用,默认把页面放在浏览器里渲染[1]。做 SEO 的人会碰到它,因为不少企业站和后台系统用它开发,而客户端渲染的默认行为对抓取不友好。Angular 后来补上了服务端渲染和预渲染,用不用得上,要看站点性质。
框架定位与生态
Angular 是一套完整的框架,不是单纯的界面库。路由、表单、依赖注入和构建工具都自带,官方还提供了命令行工具 ng。
它由 Google 维护,在大型企业应用里用得多,生态里有 Angular Material 这类组件库。它的写法基于 TypeScript,类型检查比较严。
默认渲染方式
Angular 默认把应用作为客户端渲染交付[1]。官方也把这种做法的代价写明了:首屏加载更慢,性能指标更差,因为大部分计算落在用户设备上[1]。
和别的框架一样,服务器返回的 HTML 里只有挂载点,正文要等 JavaScript 执行之后才出现。
客户端渲染与抓取
Angular 官方直接点出了抓取问题:“如果页面需要被搜索爬虫索引,客户端渲染可能对搜索引擎优化产生负面影响”[1]。原因是搜索爬虫执行 JavaScript 有上限[1]。
Google 处理 JavaScript 网页分三个阶段:抓取、呈现、编入索引[3]。第二步要用无头浏览器跑一遍脚本,等它完成,正文才可能进索引。
这一点不只是 Google。Bing 的站长博客也讨论过类似问题,动态渲染和 JavaScript 处理都需要额外安排[2]。
服务端渲染与预渲染
Angular 提供了三种渲染模式,可以按路由分别设置[1]:
| 模式 | 服务器返回什么 | 什么时候用 |
|---|---|---|
| 服务端渲染 | 每次请求现算的完整 HTML | 需要区分的动态页面 |
| 预渲染 | 构建时生成好的静态 HTML | 内容固定的页面 |
| 客户端渲染 | 只有挂载点的 HTML | 后台和登录后的界面 |
新建项目时带上服务端渲染的开关,现有项目可以加装模块:
ng new my-app --ssr
官方说明,服务端渲染通常有很好的搜索引擎优化效果,因为搜索爬虫收到的是渲染完整的 HTML 文档[1]。预渲染的效果类似,代价是构建时间更长[1]。
使用的代价
- 要跑服务端。服务端渲染每次请求都要运行 Angular 生成响应,服务器成本会上涨[1]。
- 编写受限。代码不能直接依赖
window、document这类浏览器接口,能选的库也变少[1]。 - 构建更花时间。预渲染在构建阶段生成页面,页面多时构建会明显变慢。
- 出错时页面空白。渲染报错或脚本加载失败,用户看到的可能是没有正文的页面。
常见误用
一个误用是以为 Angular 自带服务端渲染。它默认是客户端渲染,要另装模块并配好服务器。
另一个误用是给后台也开着服务端渲染,白白增加服务器开销。
还有一种是把只在浏览器可用的代码写进共用组件,这类代码在服务端会报错,页面可能整页渲染失败。
附录
参见
参考资料
官方(境外)
- 《Server and hybrid rendering》,Angular 官方文档。
- 《bingbot Series: JavaScript, Dynamic Rendering, and Cloaking》,Bing 网站管理员博客。
- 《了解 JavaScript SEO 基础知识》,Google 搜索中心,2026-03-04 更新。
外部链接
无。