AMP
Beispiele
Mit Next.js können Sie jede React-Seite mit minimaler Konfiguration und ohne React zu verlassen in eine AMP-Seite umwandeln.
Weitere Informationen über AMP finden Sie auf der offiziellen Website amp.dev.
AMP aktivieren
Um AMP-Unterstützung für eine Seite zu aktivieren und mehr über die verschiedenen AMP-Konfigurationen zu erfahren, lesen Sie die API-Dokumentation für next/amp
.
Einschränkungen
- Nur CSS-in-JS wird unterstützt. CSS-Module werden von AMP-Seiten derzeit nicht unterstützt. Sie können Unterstützung für CSS-Module zu Next.js beitragen.
AMP-Komponenten hinzufügen
Die AMP-Community stellt viele Komponenten bereit, um AMP-Seiten interaktiver zu gestalten. Next.js importiert automatisch alle auf einer Seite verwendeten Komponenten, und es ist nicht erforderlich, AMP-Komponentenskripts manuell zu importieren:
export const config = { amp: true }
function MyAmpPage() {
const date = new Date()
return (
<div>
<p>Ein Zeitpunkt: {date.toJSON()}</p>
<amp-timeago
width="0"
height="15"
datetime={date.toJSON()}
layout="responsive"
>
.
</amp-timeago>
</div>
)
}
export default MyAmpPage
Das obige Beispiel verwendet die amp-timeago
-Komponente.
Standardmäßig wird immer die neueste Version einer Komponente importiert. Wenn Sie die Version anpassen möchten, können Sie next/head
verwenden, wie im folgenden Beispiel gezeigt:
import Head from 'next/head'
export const config = { amp: true }
function MyAmpPage() {
const date = new Date()
return (
<div>
<Head>
<script
async
key="amp-timeago"
custom-element="amp-timeago"
src="https://cdn.ampproject.org/v0/amp-timeago-0.1.js"
/>
</Head>
<p>Ein Zeitpunkt: {date.toJSON()}</p>
<amp-timeago
width="0"
height="15"
datetime={date.toJSON()}
layout="responsive"
>
.
</amp-timeago>
</div>
)
}
export default MyAmpPage
AMP-Validierung
AMP-Seiten werden während der Entwicklung automatisch mit amphtml-validator validiert. Fehler und Warnungen werden im Terminal angezeigt, in dem Sie Next.js gestartet haben.
Seiten werden auch während des statischen HTML-Exports validiert, und alle Warnungen/Fehler werden im Terminal ausgegeben. AMP-Fehler führen dazu, dass der Export mit dem Statuscode 1
beendet wird, da der Export kein gültiges AMP ist.
Benutzerdefinierte Validatoren
Sie können einen benutzerdefinierten AMP-Validator in next.config.js
wie folgt einrichten:
module.exports = {
amp: {
validator: './custom_validator.js',
},
}
AMP-Validierung überspringen
Um die AMP-Validierung zu deaktivieren, fügen Sie den folgenden Code zu next.config.js
hinzu:
experimental: {
amp: {
skipValidation: true
}
}
AMP im statischen HTML-Export
Bei Verwendung des statischen HTML-Exports werden Seiten statisch vorgerendert. Next.js erkennt, ob die Seite AMP unterstützt, und passt das Exportverhalten entsprechend an.
Beispielsweise würde die hybride AMP-Seite pages/about.js
folgendes ausgeben:
out/about.html
- HTML-Seite mit clientseitiger React-Laufzeitumgebungout/about.amp.html
- AMP-Seite
Wenn pages/about.js
eine reine AMP-Seite ist, würde sie folgendes ausgeben:
out/about.html
- Optimierte AMP-Seite
Next.js fügt automatisch einen Link zur AMP-Version Ihrer Seite in die HTML-Version ein, sodass Sie dies nicht manuell tun müssen, wie hier gezeigt:
<link rel="amphtml" href="/about.amp.html" />
Und die AMP-Version Ihrer Seite enthält einen Link zur HTML-Seite:
<link rel="canonical" href="/about" />
Wenn trailingSlash
aktiviert ist, würden die exportierten Seiten für pages/about.js
folgendes sein:
out/about/index.html
- HTML-Seiteout/about.amp/index.html
- AMP-Seite
TypeScript
AMP hat derzeit keine integrierten Typen für TypeScript, aber dies ist in ihrer Roadmap enthalten (#13791).
Als Workaround können Sie manuell eine Datei namens amp.d.ts
in Ihrem Projekt erstellen und diese benutzerdefinierten Typen hinzufügen.