Du javascript personnalisé dans les pages AMP ?

Tech et Architecture
Vignette de l'articleJavascript portant sur la balise des pages AMP

Conférence AMP 2019

Javascript un langage mis à l’écart par AMP

Comme vous pouvez vous en douter, cet article concerne le format de page open-source AMP de Google. Si vous ne connaissez pas encore cette technologie nous vous conseillons de lire notre article à ce sujet ?.
Au contraire si vous avez suivi la road-map d’AMP, souvenez-vous que lorsque Google a rendu disponible AMP en début d’année 2016, l’utilisation de scripts externes n’était pas possible. Aujourd’hui, Google tient toujours le même discours sur son site support.
D’ailleurs il a totalement raison ! Le langage javascript est certes une technologie puissante et remarquable par sa capacité à manipuler les éléments d’une page, mais son utilisation peut parfois être un frein à la construction du DOM. Il n’y a qu’à voir le DOM Virtuel proposé par React (framework délivré par Google justement …), du point de vue d’un moteur de recherche, on ne peut pas dire que ce soit quelque chose de très SEO-friendly. Puisque aucun contenu n’est présent dans le DOM lors du passage du Googlebot, l’utilisation intensive du javascript constitue dans ce genre de cas, en effet, un gros problème pour l’indexation.
Bref, quoi qu’il en soit ce n’est pas pour des critères SEO que le custom javascript a été écarté des pages AMP. Cette volonté visait simplement à assurer le chargement de page presque instantané de ce format particulier, et peut-être à garantir une ergonomie homogénéisée et optimisée sur toutes les pages AMP.
Souvenez-vous également que le poids maximum d’une page AMP a été fixé à 50ko.
Tout à fait logique ! Encore une fois, si l’on veut avoir un chargement de page efficace, il faut que cette page soit légère, (merci Captain Obvious). Or, en ayant la possibilité d’ajouter des GIFs et même des vidéos sur les pages AMP, la capacité de stockage de ces pages peut rapidement atteindre le seuil maximal. Alors si vous vouliez utiliser une bibliothèque ou un framework javascript, qui soit dit en passant peut parfois peser plus de 20ko ; sans même parler des directives AMP, on peut en conclure que ça risque d’être assez compliqué.

De nouvelles fonctionnalités javascript natives à AMP

Avant même de parler de la balise <amp-script>, il est important de souligner les nouvelles fonctionnalités natives dévoilées par AMP le 17 avril dernier. Certaines d’entres-elles étaient d’ailleurs attendues pour la fin d’année 2018. Quoi qu’il en soit, ces nouveautés peuvent paraître antinomiques à ce qui a été évoqué au dessus, puisqu’elles sont gérées en javascript. Vous trouverez chacune de ces nouveautés présentées dans la vidéo ci-dessous.

Des images chargées en lazy-loading

Le lazy-loading est une technique de chargement asynchrone qui permet d’appeler un contenu en arrière-plan. Par ce mécanisme vous pouvez hiérarchiser et manipuler l’ordre d’apparition des contenus présents sur la page.
Pourquoi ? Parce que naturellement le contenu d’une page web est chargée en fonction de son ordre d’écriture. Concrètement avec le lazy-loading, vous allez prioriser l’appel de ressources moins lourdes comme du texte, à des fichiers plus volumineux comme des images ou des vidéos. Et c’est ce que propose désormais AMP !
Ne vous inquiétez pas, le résultat est bien maîtrisé. Si vous pensiez voir surgir une image sauvage dans un texte à trou au bout de 2 secondes de chargement ce n’est pas ça !
En réalité, une image de prévisualisation est générée par le CDN de Google, en amont du chargement de votre page. Cette image a pour but d’être beaucoup plus légère que l’image originale, et de ne rester qu’un court instant en attendant que l’image originale charge.
Lorsqu’un utilisateur charge votre page, cette image de prévisualisation est donc chargée en même temps que le reste de la page, et de façon asynchrone en arrière plan l’image originale va être appelée et va progressivement remplacer l’image de substitution.

Element level infinite scroll

Attendue depuis déjà quelques mois, l’infinite scroll ou (défilement infini des pages) est une fonctionnalité similaire au lazy-loading qui permet de charger de façon asynchrone une liste de contenus.
Cette fonctionnalité est particulièrement adaptée au mobile. Cela permet à un utilisateur de faire défiler les éléments d’une page (catalogue produits, photos, etc …) sans avoir à passer par une pagination. C’est notamment ce que proposent les réseaux sociaux pour pouvoir charger le fil d’actualité au fur et à mesure de votre navigation sur la page.
L’infinite scroll permet ainsi d’économiser des ressources serveurs en effectuant des appels de contenus vers la base de données uniquement si un événement est réalisé au préalable par l’utilisateur. Au final, le temps de chargement de la page est fractionné et la page se charge donc plus rapidement. Les goulots d’étranglement sont évités et le navigateur web peut ainsi afficher les premiers éléments d’une page web sans avoir à attendre que le reste soit chargé ! On peut par exemple utiliser cette technique pour générer l’affichage des commentaires d’un article. De cette façon, les commentaires ne seront appelés uniquement si l’utilisateur a fini de l’article.

Une lightbox permettant d’afficher les images en taille réelle

Rien de trop exceptionnel, il vous sera maintenant possible de cliquer sur une image sur une page AMP et d’accéder à une visionneuse ! Autrement dit, vous pourrez voir l’image en question en pleine largeur !

Des nouveaux carrousels d’images

les nouveaux carrousels d'images proposées par AMPAMP va prochainement mettre à disposition 5 nouvelles formes de carrousel d’images. Chacune de ces formes ont été pensé dans le but de mettre en avant votre contenu en fonction de leur “vocation”. Vous pourrez ainsi :

  • mettre en avant vos articles avec un slider embarquant une légende ( 1)
  • créer un slider version “home page” (2)
  • illustrer de façon plus parlante vos produits (3) et (4)
  • faire un scroll horizontal (adapté au mobile) de plusieurs éléments (5)

3 nouveaux loader

Nouveauté qui s’apparente plus à une mesure d’UI, AMP proposera désormais trois loaders différents. Avec ces nouvelles animations, l’utilisateur pourra mieux appréhender et deviner la nature du contenu qui est en train de charger. Le premier loader, qui paraît le plus naturel est d’associé à des composants AMP. Ces composants peuvent donc être des images, iFrames, des listes ou même des carrousels. Le second loader quant à lui est associé à des du contenus publicitaires. Et le troisième permet de d’indiquer un indice sur le contenu qui est en train de charger.

<amp script> ses possibilités et ses limites

Le 11 avril dernier Google a fait un teaser de sa conférence en postant le tweet ci-dessus par la page Twitter d’AMP ! Autant dire que cette nouvelle était inattendue, la communauté AMP avait renoncé à l’idée qu’un jour AMP puisse accepter du javascript personnalisé !

<amp script> : la balise capable de faire tourner un émulateur

Pour tester les limites de sa balise , Google a demandé à l’un de ses collaborateurs d’incorporer un émulateur javascript (créé dans un script externe) dans cette fameuse. C’est Aaron de l’équipe dev d’AMP qui a conçu cet émulateur. Et devinez quoi, ça a marché ! Si vous le souhaitez, vous pouvez voir cette démonstration à 4 minutes 20 dans la vidéo présentée ci-dessus.
Cet exemple a été conçu uniquement pour déceler les limites de la balise <amp script> et l’utilisation du javascript personnalisé dans AMP. Après avoir mis en avant sa prouesse, AMP insiste bien sur le fait que cet exemple représente un cas concret de ce qu’il ne faut pas faire. Ce serait en effet du code AMP non valide, et si vous cherchez à faire la même chose, votre script ne serait pas accepté. En parlant de tester, désolé de vous décevoir mais <amp script> n’est encore pas disponible en production.
Si vous le souhaitez, vous pouvez néanmoins participer à la phase d’amélioration de la balise, en inscrivant le nom de votre domaine ici afin d’obtenir l’accréditation pour tester cette fonctionnalité.

React, Vue JS et Preact compatible avec <amp script>

Screenshot de la conférence AMP 2019 montrant la comptabilité entre preact, react, vueJS et

La vidéo qui suit (en dessous) est beaucoup plus technique et saura ravir les plus curieux d’entre-vous ! Les 20 premières minutes de la vidéo sont consacrées à expliquer ce pourquoi le javascript personnalisé doit être utilisé et comment.
Notion importante à retenir : une page AMP ne pourra supporter que 150KiB maximum de javascript personnalisé. Cette limite a été fixée dans le but de d’éviter certaines dérives, comme l’émulateur présenté ci-dessus. Ne vous inquiétez pas, d’après l’équipe d’AMP, 150kIB devrait vous suffire pour utiliser le javascript “ à bon escient”.

Pour en savoir plus sur l’utilisation des frameworks javascript compatibles, il faudra vous rendre à 23 minutes 50 dans la vidéo ! Vous y trouverez des exemples de tests fait avec ces frameworks, dont notamment une comparaison entre Preact et Vue. Si vous ne connaissez pas Preact ( le logo violet), retenez simplement qu’il s’agit d’un React-like qui ne pèse seulement que 3 petits ko ! Impressionnant non ? Malheureusement, il n’y a pas de miracle pour faire rentrer la bibliothèque javascript React dans 3ko, il a fallu faire des compromis ! Nous vous laissons regarder un aperçu de ses capacités au travers de la vidéo ci-dessus. Néanmoins, si vous cherchez un framework javascript efficace, super léger et avec une documentation bien fourni, on vous conseille de regarder du côté de Mithril JS.

Et si on échangeait ?

Façonnez l’avenir digital de votre marque. Que vous souhaitiez harmoniser vos points de contact, créer des expériences client unifiées ou optimiser votre écosystème omnicanal, nous concevons des solutions qui marient innovation et élégance.

Parler à un expert

Perspectives,
ce qu’il faut retenir

Toutes les actualités
Jamf Nation Meetup - Apple Numendo 2025.png
Design et Expérience 22.01.2026

L’avenir de la gestion Apple : décryptage du Jamf Nation Meet-Up Paris 2025 par Numendo

Eco-conception mobile
Design et Expérience 25.02.2025

Éco-conception mobile : les bonnes pratiques pour votre application

Image représentant l'article sur le Référencement
Design et Expérience 07.04.2022

Les acronymes du référencement web

Outils utiles Numendo
Design et Expérience 19.06.2020

Outils utiles

Agence Numendo Paris

48 rue de la Bienfaisance
75 008 Paris

Notre agence parisienne accompagne les marques et les grands comptes dans leurs projets digitaux les plus stratégiques.

Située à 10 minutes de la gare Saint-Lazare et à deux pas du métro Miromesnil, elle réunit nos experts en conseil, e-commerce, data produit et architecture omnicanale.

Numendo Paris incarne l’alliance entre vision stratégique, expertise technique et proximité client.

Faites partie de l’aventure
Numendo Paris

Rejoindre Numendo Paris, c’est intégrer un hub d’innovation où l’excellence technique rencontre l'esprit entrepreneurial. Un cadre stimulant pour piloter des projets stratégiques de renommée internationale au cœur de la capitale.

Agence Numendo Mulhouse

2a Av. Auguste Wicky
68 100 Mulhouse

L’agence de Mulhouse est le pôle d’excellence technique dédié à la performance de vos plateformes métiers.

Implantés au cœur de l’Alsace à deux pas de la gare de Mulhouse et a proximité directe de l’Allemagne et de la Suisse, nos locaux accueillent une communauté de passionnés centrée sur l’innovation et la robustesse du code.

Elle symbolise la force de frappe technologique du groupe, capable de bâtir des écosystèmes B2B et industriels hautement complexes.

Faites partie de l’aventure
Numendo Mulhouse

S’épanouir à Mulhouse, c’est intégrer un pôle historique où priment la passion technologique et la solidarité.
Un environnement à taille humaine idéal pour relever des défis industriels et techniques d'envergure.

Agence Numendo Genève

Rue du Marché 5,
1204 Genève

Notre agence genevoise allie culture de la précision et expertise digitale pour faire rayonner vos projets en Suisse et à l’international.

Idéalement située en plein coeur de Genève, elle offre un cadre de travail privilégié pour accompagner la transformation data des acteurs les plus exigeants.

Genève est le hub dédié à la structuration de l’information produit et au déploiement de stratégies e-commerce agiles et évolutives principalement dans le secteur du luxe et de la finance.

Faites partie de l’aventure Numendo Genève

Faire partie de l’équipe Genève, c’est cultiver l’exigence et la précision pour un digital performant et durable. Un cadre de travail privilégié pour transformer le futur des données produits et du e-commerce suisse.