SEO 百科

JavaScript 基础

本页目录

JavaScript 基础

JavaScript 是一种轻量级、解释型的编程语言,用来为网页添加动态功能[1]。做 SEO 的人需要了解它,因为抓取和执行是两件不同的事。爬虫先取回 HTML 源码,之后再决定要不要执行脚本。源码里没有的内容能不能被收录,取决于后面这一步。

脚本在页面里承担的工作

页面的内容与结构写在 HTML 里,呈现样式写在 CSS 里,动态行为交给 JavaScript。三者各管一层。

JavaScript 最常见的工作是操作文档对象模型,简称 DOM。DOM 是浏览器解析源码后得到的一棵树,页面上的每个元素都是树上的一个节点。脚本改动这棵树,访客看到的页面就跟着变。

它还能在页面打开后继续向服务器要数据。拿回的内容填进页面某一块,整个网页不必重新加载。搜索框的联想提示、购物车的数量变化,都是这样出现的。

脚本体积也在上升。2024 Web Almanac 的统计显示,页面 JavaScript 体积的中位数在移动端达到 558 千字节[4]。脚本越大,浏览器执行完的时间越晚。

源码与执行结果

Google 把处理网页的流程分为三个阶段:抓取、呈现、编入索引[2]。抓取阶段拿到的是一份 HTML 源码,脚本此时还未运行。

呈现发生在抓取之后。凡是返回 200 状态码的网页,Googlebot 都会加进渲染队列[2]。渲染队列是等待执行脚本的一列网页,排到了才开始跑。

排队时间不固定。Google 说明,网页在队列里“可能会是几秒钟,但也可能会是更长时间”[2]。脚本跑完以后,引擎重新解析渲染出来的 HTML,用它编入索引。

所以同一个网址有两份内容:源码,和渲染后的 HTML。前者在抓取时就已固定,后者要等脚本跑完。索引用的是后者,前提是渲染这一步确实完成。

只能由脚本生成的内容

有一类页面,初始 HTML 里几乎没有正文,只有一段脚本。Google 把这种结构叫应用外壳模型[2]。正文要等脚本执行并取回数据,之后才被写进页面。

属于这一类的还有几种:

  • 客户端路由切换出来的视图,网址变了,内容由脚本替换;
  • 由接口数据生成的列表,例如商品、评论和搜索结果;
  • 交互之后才展开的菜单、标签页和折叠区域。

这些内容未必收录不到。Google 会执行 JavaScript,渲染后写进 DOM 的文字能被读到。难处在于多了两道关口:脚本先要成功加载,再要成功执行。

与抓取和收录的关系

百度把搜索的工作原理概括为三步:从互联网抓取网页、建立索引数据库、将索引库中的数据展现给用户[3]。抓取是第一步,拿到的就是源码。

要让内容稳稳进索引,最直接的做法是把正文写进原始 HTML。爬虫不必执行脚本,就能读到标题、正文和链接。

做不到全站服务端渲染时,还有别的路子。Google 建议采用服务端渲染或预渲染[2]。服务端渲染指服务器直接返回带正文的 HTML,预渲染指部署时先把页面生成成静态文件。Google 给的理由有两条:用户和抓取工具能更快看到内容,以及并非所有漫游器都能运行 JavaScript[2]。

常见误用

  • 正文全部由脚本生成,原始 HTML 里只有一段脚本和几个占位元素。
  • 关键文字做成图片,源码里没有这段文字。
  • 站内跳转用脚本实现,爬虫发现不了目标页面。
  • 首屏依赖一个大体积脚本,渲染迟迟跑不完。

附录

参见

参考资料

官方(境外)

  1. 《JavaScript》,MDN Web 文档,2026-05-26 更新。
  2. 《了解 JavaScript SEO 基础知识》,Google 搜索中心,2026-03-05 更新。

官方(国内)

  1. 《百度搜索的工作原理》,百度搜索资源平台,2023-12-21 更新。

第三方

  1. 《JavaScript》,2024 Web Almanac,HTTP Archive,2025-03-03 发布。

外部链接

无。