AMP
例
Next.jsを使用すると、最小限の設定で、Reactを離れることなく、任意のReactページをAMPページに変換できます。
AMPについての詳細は、公式のamp.devサイトをご覧ください。
AMPの有効化
ページのAMPサポートを有効にし、異なるAMP設定についてさらに学ぶには、next/amp
のAPIドキュメントをお読みください。
注意点
- CSS-in-JSのみサポートされています。CSSモジュールは現在AMPページでサポートされていません。Next.jsにCSSモジュールのサポートを貢献できます。
AMPコンポーネントの追加
AMPコミュニティは、AMPページをより対話的にするための多くのコンポーネントを提供しています。Next.jsはページで使用されているすべてのコンポーネントを自動的にインポートするため、AMPコンポーネントスクリプトを手動でインポートする必要はありません:
上記の例では、amp-timeago
コンポーネントを使用しています。
デフォルトでは、常にコンポーネントの最新バージョンがインポートされます。バージョンをカスタマイズしたい場合は、以下の例のようにnext/head
を使用できます:
AMP検証
AMPページは、開発中にamphtml-validatorで自動的に検証されます。エラーと警告は、Next.jsを起動したターミナルに表示されます。
ページは静的HTML エクスポート中にも検証され、警告やエラーがターミナルに出力されます。任意のAMPエラーは、エクスポートが有効なAMPではないため、ステータスコード1
で終了します。
カスタムバリデーター
next.config.js
で以下のようにカスタムAMPバリデーターを設定できます:
AMP検証のスキップ
AMP検証をオフにするには、next.config.js
に以下のコードを追加します
静的HTML エクスポートでのAMP
静的HTML エクスポートを使用してページを静的にプレレンダリングする場合、Next.jsはページがAMPをサポートしているかを検出し、それに基づいてエクスポート動作を変更します。
例えば、ハイブリッドAMPページpages/about.js
は以下を出力します:
out/about.html
- クライアントサイドReactランタイムを持つHTMLページout/about.amp.html
- AMPページ
そして、pages/about.js
がAMP専用ページの場合:
out/about.html
- 最適化されたAMPページ
Next.jsは自動的にHTMLバージョンのページにAMPバージョンへのリンクを挿入するので、以下のように手動で行う必要はありません:
また、ページのAMPバージョンにはHTMLページへのリンクが含まれます:
trailingSlash
が有効な場合、pages/about.js
のエクスポートされたページは:
out/about/index.html
- HTMLページout/about.amp/index.html
- AMPページ
TypeScript
AMPは現在、TypeScriptの組み込み型がありませんが、ロードマップに含まれています(#13791)。
回避策として、プロジェクト内にamp.d.ts
というファイルを手動で作成し、カスタム型を追加できます。