IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Next.js 11 est disponible, elle améliore le temps de démarrage de 24 %
Et réduit de 40 % le temps de traitement des modifications

Le , par Bruno

119PARTAGES

6  0 
Next.js est un framework React pour le rendu côté serveur, mais il ne se limite pas à cela. Il est présenté par ses créateurs comme une chaîne d'outils à configuration zéro et à commande unique pour les applications React. Il fournit une structure commune qui vous permet de construire facilement une application frontale React, et gère de manière transparente le rendu côté serveur pour vous. La version 11 de Next.js a été publiée ce lundi avec de nouvelles fonctionnalités et quelques améliorations. Voyons ci-dessous quelques nouveautés de cette version.

Conformance

Même avec des outils performants et des optimisations automatiques dans les frameworks, on demande souvent aux propriétaires de sites et aux développeurs d'applications de devenir des experts en matière de qualité UX, comme les performances, la sécurité et l'accessibilité. À mesure que des fonctionnalités sont ajoutées et que les équipes s'agrandissent, les développeurs doivent penser différemment.

Grâce à son travail de création d'applications Web à grande échelle telles que Search et Maps, Google a prouvé que les frameworks peuvent jouer un rôle crucial dans le maintien de la qualité lorsque les équipes et les applications évoluent. En s'appuyant sur un système de valeurs par défaut et de protections solides, ils permettent aux développeurs de se concentrer davantage sur les fonctionnalités et les produits. Aujourd'hui, l'équipe des plateformes Web de Google a commencé à mettre en libre accès son système avec Conformance for Next.js.

Conformance est un système qui fournit des solutions et des règles soigneusement élaborées pour prendre en charge un chargement optimal, avec des ajouts à venir pour prendre en charge d'autres aspects de qualité comme la sécurité et l'accessibilité. Ces solutions libèrent de la nécessité de mémoriser toutes les dernières règles pour des performances de chargement optimales, tout en donnant la flexibilité de faire les bons choix pour les applications.


Chez Google, la conformité était une évolution. Les équipes s'appuyaient sur un petit groupe de mainteneurs très expérimentés qui effectuaient des revues de code approfondies, signalant les éléments qui avaient un impact sur la qualité et la maintenabilité des applications, bien au-delà des problèmes de correction. Pour adapter ce système à des équipes de développeurs d'applications en pleine croissance, un système de conformité a été développé pour codifier les meilleures pratiques de manière automatisée et applicable. Cela a permis de garantir un niveau élevé et constant de qualité des applications et de maintenabilité de la base de code, quel que soit le nombre de contributeurs au code.

En plus de nombreuses optimisations fondamentales soutenues par la recherche sur les performances, Next.js 11 prend en charge ESLint afin de faciliter la détection des problèmes spécifiques au framework pendant le développement et d'établir des directives pour l’équipe de développement afin de garantir les meilleures pratiques, même lorsque l’équipe évolue.

Pour commencer avec ESLint, on doit exécuter npx next lint après la mise à niveau vers Next.js 11. L'intégration d'ESLint fonctionne pour les applications Next.js nouvelles et existantes, fournissant un nouvel ensemble de règles pour aider les développeurs à créer de meilleures applications.

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
$ npx next lint
We created the .eslintrc file for you and included the base Next.js ESLint configuration.

./pages/about.js
7:9  Warning: Do not include stylesheets manually. See: https://nextjs.org/docs/messages/no-css-tags.  @next/next/no-css-tags
10:7  Warning: External synchronous scripts are forbidden. See: https://nextjs.org/docs/messages/no-sync-scripts.  @next/next/no-sync-scripts

./pages/index.js
4:10  Warning: Do not use the HTML <a> tag to navigate to /about/. Use Link from 'next/link' instead. See: https://nextjs.org/docs/messages/no-html-link-for-pages.  @next/next/no-html-link-for-pages

Need to disable some ESLint rules? Learn more here: https://nextjs.org/docs/basic-features/eslint#disabling-rules

Done in 1.94s.
Amélioration des performances

Les responsables ont amélioré le temps de démarrage de 24 % et réduit de 40 % le temps de traitement des modifications grâce à React Fast Refresh. Vous avez bénéficié de ces améliorations de vitesse incroyables en maintenant Next.js à jour. Next.js 11 inclut une autre optimisation de Babel pour réduire davantage le temps de démarrage. Nous avons créé une toute nouvelle implémentation du chargeur Babel pour webpack, en optimisant le chargement et en ajoutant une couche de mise en cache de la configuration en mémoire. Dans la pratique, cela ne signifie aucun changement pour les développeurs, mais, au final, une expérience de développement plus rapide.

Optimisation des scripts

Le nouveau composant de script Next.js est une optimisation fondamentale qui permet aux développeurs de définir la priorité de chargement des scripts tiers afin de gagner du temps et d'améliorer les performances de chargement. Les sites Web ont souvent besoin de tiers pour des éléments tels que les analyses, les publicités, les widgets de support client et la gestion des consentements. Cependant, ces scripts ont tendance à peser lourdement sur les performances de chargement et peuvent nuire à l'expérience de l'utilisateur. Les développeurs ont souvent du mal à décider où les placer dans une application pour un chargement optimal. Avec next/script, il est possible de définir la propriété de stratégie et Next.js les classera automatiquement par ordre de priorité pour améliorer les performances de chargement :
  • beforeInteractive : pour les scripts critiques qui doivent être récupérés et exécutés avant que la page ne soit interactive, comme la détection des robots et la gestion du consentement. Ces scripts sont injectés dans le HTML initial depuis le serveur et sont exécutés avant que le JavaScript autonome ne soit exécuté ;
  • afterInteractive (par défaut) : pour les scripts qui peuvent être récupérés et exécutés après que la page soit interactive, tels que les gestionnaires de balises et les analyses. Ces scripts sont injectés côté client et s'exécutent après l'hydratation ;
  • lazyOnload pour les scripts qui peuvent attendre d'être chargés pendant les temps morts, tels que l'assistance par chat et les widgets de médias sociaux.

Code : Sélectionner tout
1
2
3
4
<Script
  src="https://polyfill.io/v3/polyfill.min.js?features=Array.prototype.map"
  strategy="beforeInteractive" // lazyOnload, afterInteractive
/>
Il est possible également exécuter du code après le chargement. Par exemple, vous pouvez attendre pour exécuter le code que l'utilisateur ait répondu à la question de consentement :

Code : Sélectionner tout
1
2
3
4
5
6
7
<Script
  src={url} // consent mangagement
  strategy="beforeInteractive"
  onLoad={() => {
    // If loaded successfully, then you can load other scripts in sequence
  }}
/>
L'expérience de chargement du script par défaut dans Next.js 11, passe du préchargement et de l'asynchronisme au report. Les scripts tiers sont souvent en concurrence avec des ressources plus prioritaires, comme les CSS, les polices et les images. Le maintien d'un séquencement correct par rapport à ces ressources, ainsi qu'aux autres scripts, représente une charge excessive pour les développeurs. En fournissant un composant de script avec une stratégie de chargement par défaut de afterInteractive, les développeurs disposent maintenant de meilleures valeurs par défaut pour des performances optimales, avec la possibilité de choisir beforeInteractive si nécessaire.

Améliorations des images

Voici, ci-dessous, deux des fonctionnalités les plus demandées par la communauté pour le composant next/image, afin de réduire le décalage cumulatif de la mise en page et de créer une expérience visuelle plus fluide.

Détection automatique de la taille (images locales)
Utilisez le mot-clé import pour l'image src afin de définir automatiquement la largeur et la hauteur des images statiques. Par exemple, l'utilisation du composant Image intégré est désormais encore plus facile :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
import Image from 'next/image'
import author from '../public/me.png'

export default function Home() {
  return (
    // When importing the image as the source, you
    // don't need to define `width` and `height`.
    <Image src={author} alt="Picture of the author" />
  )
}
Espaces réservés aux images

L'option next/image prend désormais en charge les caractères de remplissage flous afin de faciliter la transition entre l'espace vide et l'image et de réduire le temps de chargement perçu, en particulier pour les utilisateurs dont la connexion Internet est plus lente. Pour utiliser des placeholders flous, ajoutez placeholder="blur" à votre image.

Code : Sélectionner tout
<Image src={author} alt="Picture of the author" placeholder="blur" />
Next.js prend également en charge le floutage des images dynamiques en vous permettant de fournir un blurDataURL personnalisé, qui est fourni par votre backend. Par exemple, vous pouvez générer un blurha.sh sur le serveur.

Code : Sélectionner tout
1
2
3
4
5
6
<Image
  src="https://nextjs.org/static/images/learn.png"
  blurDataURL="data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAIAAoDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAb/xAAhEAACAQMDBQAAAAAAAAAAAAABAgMABAUGIWEREiMxUf/EABUBAQEAAAAAAAAAAAAAAAAAAAMF/8QAGhEAAgIDAAAAAAAAAAAAAAAAAAECEgMRkf/aAAwDAQACEQMRAD8AltJagyeH0AthI5xdrLcNM91BF5pX2HaH9bcfaSXWGaRmknyJckliyjqTzSlT54b6bk+h0R//2Q=="
  alt="Picture of the author"
  placeholder="blur"
/>
Webpack 5

Avec Next.js 10.2, le déploiement de webpack 5 a été étendu à toutes les applications sans configuration personnalisée dans leur .config.js. Aujourd'hui, webpack 5 est la version par défaut pour toutes les applications Next.js, ce qui apporte une variété de fonctionnalités et d'améliorations. Plus de 3 400 tests d'intégration Next.js existants sont exécutés sur chaque pull request avec webpack 5 activé. Si l'application développée a une configuration webpack personnalisée, il est recommandé de suivre la documentation de mise à niveau pour webpack 5.

Migration de l'ARC

Au cours des six derniers mois, les responsables ont constaté une augmentation du nombre d'applications migrant de Create React App vers Next.js pour tirer parti des nombreuses améliorations de l'expérience du développeur et des performances pour l'utilisateur final que Next.js apporte. Pour aider les développeurs à convertir leurs applications vers Next.js, il a été introduit un nouvel outil dans @next/codemod qui convertit automatiquement les applications Create React App pour les rendre compatibles avec Next.js.

La transformation ajoute automatiquement un répertoire pages/ et déplace les importations CSS au bon endroit. Elle activera également un mode de compatibilité Create React App dans Next.js qui garantit que certains modèles utilisés dans Create React App fonctionnent avec Next.js.
En exploitant la nouvelle transformation, vous pouvez adopter progressivement Next.js tout en conservant les fonctionnalités de l'application Create React App existante. Pour commencer à migrer votre projet Create React App, utilisez la commande suivante :

Code : Sélectionner tout
npx @next/codemod cra-to-next
Source : Next.js

Et vous ?

Utilisez-vous Next.js ? Que pensez-vous des nouveautés de la version 11 ?

Voir aussi :

Next.js 9.3 est disponible avec la prise en charge de la génération de sites statiques et une optimisation pour les pages 404

Next.js 8 est maintenant disponible, avec une réduction de l'utilisation de la mémoire au moment de la construction

React : la version 16.8 de la bibliothèque JavaScript est disponible et embarque une version stable des Hooks

État de JavaScript en 2019 : les développeurs aiment un peu plus React, Angular est en déclin, un groupe de développeurs pense que JS est « trop complexe »

Une erreur dans cette actualité ? Signalez-nous-la !