AMP

验证 AMP 网页

观看我们的视频,了解各种验证选项。

AMP 的强大之处在于它不仅能提升网页加载速度,还能以可验证的方式让网页快速加载。这样一来,Twitter、Instagram 或 Google 搜索等第三方就能放心地通过越来越有趣的方式向读者呈现 AMP 网页。

如何检查我的网页是否是有效的 AMP 网页?

您可以通过多种方式验证 AMP 文档。这些验证方式产生的结果完全相同,因此不妨使用最适合您的开发风格的方式。

除了 AMP 有效性之外,您可能还需要确认 AMP 文档能被第三方平台发现

浏览器开发者控制台

AMP 验证工具绑定了 AMP JS 库,因此可直接在任何 AMP 网页上使用。要验证 AMP 网页,请执行以下操作:

  1. 在浏览器中打开 AMP 网页。
  2. 将“#development=[1,actions,amp,amp4ads,amp4email]”附加到网址后面,例如 http://localhost:8000/released.amp.html#development=1 是用于验证 AMP 格式的旧方式。网址 http://localhost:8000/released.amp.html#development=amp4email 将针对 AMP 电子邮件规范验证文档。
  3. 打开 Chrome DevTools 控制台并检查有无验证错误。

DevTools 控制台中显示的错误与下面屏幕截图中的类似:

Screen grab of AMP Validator errors in chrome developer console

网页界面

AMP 验证工具可以当作网页界面使用,网址为 validator.ampproject.org。此界面会在网页 HTML 源代码旁边并排显示错误。此界面是一个互动式编辑器:更改 HTML 源代码会立即导致互动式重新验证。

Screen grab of validator.ampproject.org with error examples.

浏览器扩展程序

您可以使用浏览器扩展程序直接从浏览器的工具栏访问 AMP 验证工具。在您浏览网页时,扩展程序会自动验证您访问的每个 AMP 网页,并使用彩色图标直观地标示网页的有效性。

如果 AMP 网页中存在错误,扩展程序的图标将为红色并显示遇到的错误数。
如果 AMP 网页中没有错误,图标将为绿色并显示警告数(如果有)。
如果网页不是 AMP 版本,但标示存在 AMP 版本,图标将为蓝色并带有一个链接图标,点击扩展程序会将浏览器重定向至对应的 AMP 版本。

AMP 验证工具扩展程序适用于 ChromeOpera

适用于 CI 的 NPM 软件包

作为构建和测试管道的一部分,您可以通过以下 AMP 验证工具 NPM 软件包集成 AMP 验证功能:amphtml-validatorgulp-amphtml-validator(一种 gulp 插件)。例如,您可以将 AMP 验证工具 NPM 软件包用于集成测试或计划任务,验证已向广大用户投放的实际 AMP 网页。

示例:验证 AMP HTML 文件

在本示例中,我们使用 amphtml-validator NPM 软件包验证 AMP HTML 文件。验证状态将通过管道发送到控制台。

'use strict';
var amphtmlValidator = require('amphtml-validator');
var fs = require('fs');

amphtmlValidator.getInstance().then(function (validator) {
  var input = fs.readFileSync('index.html', 'utf8');
  var result = validator.validateString(input);
  (result.status === 'PASS' ? console.log : console.error)(result.status);
  for (var ii = 0; ii < result.errors.length; ii++) {
    var error = result.errors[ii];
    var msg =
      'line ' + error.line + ', col ' + error.col + ': ' + error.message;
    if (error.specUrl !== null) {
      msg += ' (see ' + error.specUrl + ')';
    }
    (error.severity === 'ERROR' ? console.error : console.warn)(msg);
  }
});
示例:使用 gulp 任务验证 AMP HTML

在本示例中,我们的 gulp 任务可验证所有 AMP HTML 文件。如果存在 AMP 验证错误,该任务将退出并显示错误代码 (1)。

const gulp = require('gulp');
const gulpAmpValidator = require('gulp-amphtml-validator');

const paths = {
  src: 'src/*.html',
};

gulp.task('amphtml:validate', () => {
  return gulp
    .src(paths.src)
    .pipe(gulpAmpValidator.validate())
    .pipe(gulpAmpValidator.format())
    .pipe(gulpAmpValidator.failAfterError());
});

gulp.task('default', ['amphtml:validate'], function () {});

命令行工具

您可以使用 AMP HTML 验证工具命令行工具验证 AMP HTML 文件。

开始使用:

  1. 确保您已在自己的系统上安装 Node.js 及其软件包管理器 'npm'
  2. 通过运行以下命令安装 AMP HTML 验证工具命令行工具npm install -g amphtml-validator

现在,我们来验证一个真实的 AMP HTML 网页:

$ amphtml-validator https://amp.dev/
https://amp.dev/: PASS

不出所料,此网页是有效的 AMP HTML。我们来试一个无效的网页:several_errors.html。要运行 amphtml-validator 命令,您可以提供网页的网址或本地文件名称。将 several_errors.html 下载并保存到文件中,然后运行以下命令:

$ amphtml-validator several_errors.html
several_errors.html:23:2 The attribute 'charset' may not appear in tag 'meta name= and content='.
several_errors.html:26:2 The tag 'script' is disallowed except in specific forms.
several_errors.html:32:2 The mandatory attribute 'height' is missing in tag 'amp-img'. (see /zh_cn/documentation/components/amp-img/)
several_errors.html:34:2 The attribute 'width' in tag 'amp-ad' is set to the invalid value '100%'. (see /zh_cn/documentation/components/amp-ad/)
...

错误消息的格式由文件名、行、列和消息组成,通常后跟指向 AMP HTML 参考的链接。某些编辑器(包括 Emacs)可以解析这种格式,并让您能够跳至原始文件中的错误所在位置。

要着手制作自己的 AMP 网页,请考虑使用 minimum_valid_amp.html

$ amphtml-validator minimum_valid_amp.html
minimum_valid_amp.html: PASS

命令行工具提供了更多功能,包括取消颜色标注、 打印 JSON 输出或运行特定版本的验证工具 JavaScript(默认运行最新发布的脚本)。

$ amphtml-validator --help

Usage: index [options] <fileOrUrlOrMinus...>

Validates the files or urls provided as arguments. If "-" is
specified, reads from stdin instead.

Options:

    -h, --help                  output usage information
    -V, --version               output the version number
    --validator_js <fileOrUrl>  The Validator Javascript.
      Latest published version by default, or
      dist/validator_minified.js (built with build.py)
      for development.
    --format <color|text|json>  How to format the output.
      "color" displays errors/warnings/success in
              red/orange/green.
      "text"  avoids color (e.g., useful in terminals not
              supporting color).
      "json"  emits json corresponding to the ValidationResult
              message in validator.proto.

如果我的网页无效,会出现什么情况?

AMP 验证工具不仅能在开发过程中为您提供便利,还可供将您的 AMP 网页集成到其内容与搜索结果中的 Twitter 或 Google 等平台使用。尤其值得一提的是,他们通常不会直接向您的服务器请求网页,而是使用免费的 Google AMP 缓存服务来缓存您的网页并使之可向全球分发,从而进一步提高网页加载速度。

如果 AMP 验证服务检测到您的网页有问题,则该网页不会被第三方网站发现和分发,也不会出现在 Google AMP 缓存中。这样一来,您不仅会失去缓存的速度优势,您的网页还有可能无法在许多位置显示!这样就太糟糕了,我们一定要确保这种情况不会发生。

如何修复验证错误?

大多数验证错误都可以轻松处理和修复。请考虑使用以下 HTML 标记:

<img src="cat.png">

该标记生成了相关的 AMP 验证错误(在 3 种不同的工具中分别如下所示):

  • 浏览器开发者控制台

  • 网页界面

  • 浏览器扩展程序

每种工具都提供了以下几个信息:

  1. HTML 文档中存在错误的位置(行和列),在某些界面中可以点击,以突出显示相应位置。在本例中,错误发生在第 11 行第 2 列。
  2. 一行描述错误的文字。在本例中,这些文字表明我们在本该使用 <amp-img> 标记的位置使用了 <img> 标记。
  3. 指向与错误相关的文档的链接。本例中是指 <amp-img> 标记的文档。并非所有错误都会生成文档链接。

再次仔细阅读规范之后,我们意识到我们在本该使用 <amp-img> 标记的位置使用了 <img> 标记。

要详细了解可能出现的错误的完整列表,请参阅 AMP 验证错误指南。如果在认真评估之后仍有疑问,请提出问题,我们将尽力提供帮助。