Cómo crear páginas AMP en Next.js
Ejemplos
Con Next.js puede convertir cualquier página React en una página AMP, con una configuración mínima y sin salir de React.
Puede leer más sobre AMP en el sitio oficial amp.dev.
Habilitar AMP
Para habilitar el soporte AMP en una página y conocer las diferentes configuraciones de AMP, consulte la documentación de la API para next/amp
.
Limitaciones
- Solo se admite CSS-in-JS. Los Módulos CSS no son compatibles con las páginas AMP actualmente. Puede contribuir al soporte de Módulos CSS en Next.js.
Agregar componentes AMP
La comunidad AMP proporciona muchos componentes para hacer las páginas AMP más interactivas. Next.js importará automáticamente todos los componentes usados en una página y no es necesario importar manualmente los scripts de componentes AMP:
El ejemplo anterior utiliza el componente amp-timeago
.
Por defecto, siempre se importa la última versión de un componente. Si desea personalizar la versión, puede usar next/head
, como en el siguiente ejemplo:
Validación AMP
Las páginas AMP se validan automáticamente con amphtml-validator durante el desarrollo. Los errores y advertencias aparecerán en la terminal donde inició Next.js.
Las páginas también se validan durante la exportación HTML estática y cualquier advertencia/error se imprimirá en la terminal. Cualquier error AMP hará que la exportación termine con código de estado 1
porque la exportación no es AMP válida.
Validadores personalizados
Puede configurar un validador AMP personalizado en next.config.js
como se muestra a continuación:
Omitir validación AMP
Para desactivar la validación AMP agregue el siguiente código a next.config.js
:
AMP en exportación HTML estática
Al usar la exportación HTML estática para prerrenderizar páginas, Next.js detectará si la página admite AMP y cambiará el comportamiento de exportación en consecuencia.
Por ejemplo, la página híbrida AMP pages/about.js
generaría:
out/about.html
- Página HTML con runtime React del lado del clienteout/about.amp.html
- Página AMP
Y si pages/about.js
es una página solo AMP, entonces generaría:
out/about.html
- Página AMP optimizada
Next.js insertará automáticamente un enlace a la versión AMP de su página en la versión HTML, así que no tiene que hacerlo manualmente, de esta manera:
Y la versión AMP de su página incluirá un enlace a la página HTML:
Cuando trailingSlash
está habilitado, las páginas exportadas para pages/about.js
serían:
out/about/index.html
- Página HTMLout/about.amp/index.html
- Página AMP
TypeScript
AMP actualmente no tiene tipos integrados para TypeScript, pero está en su hoja de ruta (#13791).
Como solución alternativa, puede crear manualmente un archivo llamado amp.d.ts
dentro de su proyecto y agregar estos tipos personalizados.