Dans cet article, je vais parler de divers aspects du dĂ©veloppement Web que tout programmeur du profil pertinent devrait connaĂźtre. Si possible, je fournirai des liens vers des documents dĂ©montrant des exemples d'utilisation des capacitĂ©s correspondantes et des recommandations pour leur utilisation correcte. Ici, je vais me concentrer sur la mise en Ćuvre de certains mĂ©canismes dans Angular, React et Vue.
Interface utilisateur
â Disposition de la page
La création d'une application Web commence par la conception d'une mise en page attrayante et soignée qui plaira aux utilisateurs et les aidera à passer beaucoup de temps sur le site.
Il existe de nombreux frameworks CSS. Peut-ĂȘtre que parmi eux, vous trouverez exactement celui qui vous convient parfaitement. Le plus cĂ©lĂšbre d'entre eux est Bootstrap, et grĂące aux nouvelles fonctionnalitĂ©s des prĂ©processeurs CSS, vous pouvez profondĂ©ment personnaliser les styles de ce framework. Vous y trouverez divers composants et contrĂŽles, dont l'utilisation cohĂ©rente vous permettra de crĂ©er des sites conçus de maniĂšre cohĂ©rente.
La version alpha de la version 5 de Bootstrap est actuellement disponible .
Si vous prĂ©fĂ©rez crĂ©er vous-mĂȘme des ensembles de styles pour vos projets (composants, remplissage, conteneurs, etc.), vous pouvez vous concentrer sur CSS Flexbox , faisant de cette mise en page flexible des Ă©lĂ©ments de page Web la base de votre propre cadre CSS.
CSS Grid adopte une approche différente pour organiser le contenu des pages Web en le plaçant dans une grille.
â Conception adaptative
La réactivité est la capacité d'un site à adapter son contenu à l'appareil sur lequel il est consulté. Par exemple, sur un smartphone et un ordinateur portable, cet article sera différent.
La réactivité d'une application web lui permet de s'afficher correctement sur différents écrans, améliore la lisibilité du contenu et l'expérience utilisateur.
Sur MDN, vous pouvez dĂ©couvrir que les requĂȘtes multimĂ©dias sont utilisĂ©es lorsque vous devez appliquer diffĂ©rents styles CSS pour diffĂ©rents pĂ©riphĂ©riques (par exemple, pour une imprimante ou un moniteur), ainsi que pour prendre en compte les caractĂ©ristiques et paramĂštres spĂ©cifiques de l'appareil (par exemple, pour diffĂ©rentes rĂ©solutions d'Ă©cran ou pour diffĂ©rentes largeurs de la fenĂȘtre du navigateur).
Les requĂȘtes multimĂ©dias CSS sont un outil puissant pour prendre en charge la conception rĂ©active.
Ils peuvent ĂȘtre utilisĂ©s en conjonction avec la CSS Flexbox ou CSS Grid dĂ©jĂ mentionnĂ©e. Si vous prĂ©fĂ©rez utiliser des frameworks CSS, ces frameworks implĂ©mentent gĂ©nĂ©ralement dĂ©jĂ les capacitĂ©s correspondantes. Avec cette approche, pour crĂ©er des pages responsives, ajoutez simplement les classes appropriĂ©es aux Ă©lĂ©ments.
Quand il s'agit du concept de réactivité appliqué aux images , on peut penser à un attribut
srcset
. L'utilisation de cet attribut vous permet d'afficher des images de différentes tailles en fonction des caractéristiques de l'écran de l'appareil, ce qui contribue à réduire la quantité de données transférées du serveur vers le navigateur.
âComposants et commandes homogĂšnes
L'utilisateur se fera un plaisir de travailler avec le site, dont les composants et les commandes sont conçus de maniĂšre uniforme, dans le mĂȘme style. Cette approche de la conception permet Ă l'utilisateur de mieux maĂźtriser les nouvelles fonctionnalitĂ©s du site et fait office de carte de visite de l'entreprise.
Si vous souhaitez utiliser des frameworks et des bibliothÚques existants, Angular, React ou Vue pour développer vos projets, voici quelques exemples de bibliothÚques de styles qui implémentent les principes de Material Design conçus pour ces outils:
- Angulaire. BibliothĂšque de matĂ©riaux angulaires oĂč vous pouvez trouver des composants puissants et un CDK complet.
- Réagir. Les principes de Material Design sont implémentés dans les composants Web Material UI .
- Vue. Nous avons ici Vuetify , une implémentation de Material Design conçue pour les projets Vue.
âValidation de formulaire et gestion des erreurs
La validation des donnĂ©es est la tĂąche la plus importante pour les projets qui reçoivent quelque chose de l'utilisateur. De plus, rien ne doit empĂȘcher l'application de recevoir les donnĂ©es correctes de l'utilisateur: ni problĂšmes de rĂ©seau, ni erreurs sur le serveur, ni erreurs faites par l'utilisateur lui-mĂȘme. Voici quelques-unes des solutions de validation des entrĂ©es utilisateur conçues pour diffĂ©rents frameworks:
- Angulaire. Comme Angular est un framework à part entiÚre, il nous fournit une API spéciale pour la validation de formulaire.
- Réagir. La bibliothÚque React Hook Form est probablement le validateur de formulaire le plus couramment utilisé dans les projets React .
- Vue. Le nom de la bibliothÚque correspondante pour Vue, vuelidate , est construit sur un jeu de mots intéressant.
Expérience utilisateur
âUtilisation de mĂ©canismes asynchrones
Le chargement de donnĂ©es dans une application ou l'enregistrement de donnĂ©es peut prendre des millisecondes, des secondes ou mĂȘme des minutes. C'est pourquoi il est important d'informer l'utilisateur de telles opĂ©rations Ă l'aide des indicateurs appropriĂ©s et de ne pas bloquer le travail de l'utilisateur avec le projet.
Les moteurs JavaScript comme les promesses et les API de navigateur comme Fetch peuvent nous aider dans ces tĂąches .
â Prise en charge des navigateurs obsolĂštes (polyfills)
Le monde du dĂ©veloppement front-end Ă©volue trĂšs rapidement. La mĂȘme chose peut ĂȘtre dite pour les navigateurs. Mais diffĂ©rentes personnes utilisent diffĂ©rents navigateurs et diffĂ©rentes versions d'entre eux. Par consĂ©quent, pour s'assurer que leur code fonctionne correctement sur toutes les plates-formes utilisĂ©es, le dĂ©veloppeur doit veiller Ă la compatibilitĂ©. Par exemple, l'ancienne version d'IE ne prend pas en charge les mĂȘmes fonctionnalitĂ©s JS et CSS que la derniĂšre version de Google Chrome. Les polyfills
sont utilisés pour garantir que le projet fonctionne correctement dans les anciens navigateurs . Ils sont assez bien décrits dans cet article: "Un polyfill (polyfiller) est un morceau de code (ou plug-in) qui fournit une implémentation d'une technologie que vous, le développeur, vous attendez à trouver parmi les capacités de navigateur standard."
Pour savoir si une certaine rĂšgle CSS ou une certaine fonction JS est prise en charge dans une version de navigateur particuliĂšre, consultez le site Can I Use .
Si nous parlons de résoudre les problÚmes de prise en charge du navigateur dans Angular, React et Vue, la situation est la suivante:
- Angulaire. La documentation Angular contient une section spéciale sur la prise en charge des navigateurs.
- Réagir. Projets créés avec le support de Create React App , comme ReactDOM , les navigateurs commençant par IE 9. Ce support est basé sur l'utilisation de polyfills.
- Vue. Les détails de la prise en charge des navigateurs hérités sont décrits ici dans la documentation CLI.
âLocalisation et internationalisation
Votre site peut avoir des utilisateurs du monde entier. Tenir compte de ce fait lors de la création d'un projet augmentera la convivialité du site pour tous ceux qui décideront de le consulter.
La localisation (l10n, localisation) est, telle que définie par le W3C, l'adaptation du contenu d'un produit, programme ou document aux exigences linguistiques, culturelles et autres d'un marché cible spécifique.
L'internationalisation (i18n, internationalisation) est, sur la base des matériaux du W3C, la création et le développement de contenu de produit, de programme ou de documentation qui permet une localisation facile pour des marchés cibles qui diffÚrent par la culture, la région ou la langue.
Ces deux concepts sont interdĂ©pendants et peuvent ĂȘtre mis en Ćuvre de diffĂ©rentes maniĂšres. Cela comprend, par exemple, les techniques suivantes:
- Utilisation d'une liste déroulante sur le site avec une liste de langues prises en charge par le projet.
- Accédez aux informations sur la localisation géographique de l'utilisateur (à l'aide de l'API du navigateur de géolocalisation ) et adaptez le site Web en fonction des données reçues.
- Spécification des informations de langue dans l'URL. Par exemple, il pourrait ressembler à ceci:
example.com?lang=en
ou comme ceci:example.com/en
ou mĂȘme si:en.example.com
.
Maintenant, pour ces concepts dans Angular, React et Vue.
- Angulaire. Angular, encore une fois, est un framework à part entiÚre, il donne au développeur une solution toute faite .
- RĂ©agir. Les tĂąches d'internationalisation des projets peuvent ĂȘtre rĂ©solues Ă l'aide de la bibliothĂšque react-i18next , populaire dans l'environnement React .
- Vue. vue-i18n.
â
L'accessibilité (a11y, accessibilité) est la capacité du site à s'adapter aux besoins des utilisateurs handicapés.
L'accessibilitĂ© du site Web est souvent nĂ©gligĂ©e. Afin de rendre le projet accessible aux utilisateurs handicapĂ©s, il peut ĂȘtre nĂ©cessaire de rĂ©viser l'approche de la formation de l'expĂ©rience utilisateur utilisĂ©e sur celui-ci, ce qui peut parfois nĂ©cessiter une refonte profonde du projet. Dans tous les cas, il est important de prendre en compte les besoins de tous les utilisateurs, d'autant plus que mĂȘme de petits changements dans le code du projet peuvent considĂ©rablement amĂ©liorer la convivialitĂ© du site pour ceux qui ont du mal Ă utiliser des sites rĂ©guliers.
Diverses techniques sont applicables pour rendre les projets Web accessibles. Ceux-ci comprennent les éléments suivants:
- Utilisation de l'attribut image
alt
. - L'utilisation des attributs ARIA pour concevoir des descriptions du contenu des pages du site.
- Prise en charge de la possibilité de redimensionner le texte.
- Mode de contraste élevé disponible.
- Prise en charge de la navigation sur le site Ă l'aide du clavier, en particulier des touches
TAB
et des touches fléchées.
Le projet a11yproject.com met en Ćuvre l'idĂ©e de standardiser ces concepts. Cette initiative est digne de respect! Les principaux frameworks et bibliothĂšques JS font Ă©galement des efforts pour soutenir le dĂ©veloppement de sites accessibles:
- Angulaire. Il existe une section spéciale dans la documentation de ce framework . Le développement de projets accessibles est pris en charge au niveau Angular CDK .
- RĂ©agir. L'accessibilitĂ© est Ă©galement abordĂ©e dans la documentation de la bibliothĂšque React. Il existe Ă©galement une bibliothĂšque spĂ©ciale - react-a11y . Mais cette bibliothĂšque n'est plus prise en charge, alors utilisez-la avec prĂ©caution et gardez Ă l'esprit qu'elle est prĂ©vue pour ĂȘtre remplacĂ©e par la bibliothĂšque react-ax .
- Vue. Le plugin vue-a11y vous aidera à développer des projets accessibles dans Vue . Les considérations d' accessibilité ont également été prises en compte lors de la création de la bibliothÚque vuetify .
âNotifications
Afin de rester en contact avec les visiteurs de votre site, vous pouvez utiliser les notifications de l' API du navigateur . Avec son aide, vous pouvez informer les utilisateurs que quelque chose de nouveau est apparu sur le site.
Chargement et traitement des données
âUne source unique de donnĂ©es fiables
Les outils de gestion de l'état des applications, qui ont gagné en popularité en 2015, sont désormais incontournables pour presque tous les projets Web. Bien que le domaine de la gestion de l'état des applications ne soit pas simple, l'utilisation de solutions personnalisées est généralement une méthode simple et efficace de centralisation des données d'application. Tous les outils de gestion d'état sont basés sur le modÚle Flux.
Implémentation NgRx du pattern Flux (source - ngrx.io )
Ces outils utilisent des noms diffĂ©rents pour les mĂȘmes entitĂ©s. Par exemple, ce que NgRx appelle des sĂ©lecteurs s'appelle des getters dans Vuex. Ce que Angular appelle les rĂ©ducteurs s'appelle des mutations dans Vue.
Voici les outils de gestion d'état utilisés dans Angular, React et Vue:
- Angulaire. "Gestion d'état réactive pour Angular": NgRx .
- Réagir. Ici, bien sûr, Redux est utilisé .
- Vue. Vuex est utilisé pour gérer l'état des applications Vue .
âTĂ©lĂ©chargement des donnĂ©es
Il existe diffĂ©rentes maniĂšres de charger des donnĂ©es dans des applications. Le plus courant est l'utilisation de requĂȘtes HTTP dirigĂ©es vers une API Web. Le navigateur dispose d'une API Fetch conçue pour organiser le chargement des donnĂ©es, mais pour les principaux frameworks et bibliothĂšques, leurs propres solutions ont Ă©tĂ© dĂ©veloppĂ©es:
- Angulaire. La documentation Angular recommande d'utiliser rxjs et l'approche basée sur l'observateur (les observables ou les sujets sont utilisés ici).
- Réagir. La documentation React recommande d'utiliser l'API Fetch pour charger des données.
- Vue. La communauté Vue préfÚre utiliser la bibliothÚque Axios . Cette implémentation du mécanisme de chargement des données est basée sur des promesses.
Lorsqu'on parle de mĂ©canismes de chargement de donnĂ©es dans des applications Web, GraphQL mĂ©rite d'ĂȘtre mentionnĂ© . Cette technologie a changĂ© l'approche utilisĂ©e lors du chargement de donnĂ©es dans les applications frontales. Lors de son application, "Le client dĂ©termine ce dont il a besoin en utilisant le langage de requĂȘte." En utilisant GraphQL, nous pouvons obtenir exactement ce dont nous avons besoin Ă partir de sources de donnĂ©es distantes et rien de plus.
Voici les implémentations GraphQL pour les outils frontaux qui nous intéressent:
- Angulaire. apollo-angulaire
- Réagir. réagir-apollo
- Vue.js. vue-apollo
â Stockage de donnĂ©es locales
Le stockage de donnĂ©es local est le stockage de donnĂ©es sur l'ordinateur de l'utilisateur. Les donnĂ©es peuvent ĂȘtre stockĂ©es Ă l'aide de cookies , ainsi qu'en utilisant localStorage et
sessionStorage
.
âTravailleurs Web
Les travailleurs Web sont une technologie introduite par la nouvelle API de navigateur. Il permet au code JavaScript de s'exécuter en arriÚre-plan, soulageant la charge sur le thread principal et n'affectant pas les performances du code de la page Web.
Les travailleurs Web sont applicables dans Angular, React et Vue:
- Angulaire. Il existe une section spéciale dans la documentation Angular pour ce sujet.
- Réagir. Il y a un hook React spécial que vous pouvez trouver ici .
- Vue. Dans les applications Vue, les web workers sont pratiques Ă utiliser en utilisant la bibliothĂšque vue-worker .
RĂ©seau et performances
âTaille du bundle d'application
La croissance du marché des smartphones a révolutionné le monde du développement Web. Désormais, lors de la création de sites Web, nous devons d'abord prendre en compte les besoins des utilisateurs mobiles. Plus la quantité de données que les appareils mobiles doivent charger lorsqu'ils travaillent avec des projets Web est petite, mieux c'est. Selon le graphique ci-dessous, l'utilisation d'Internet mobile a dépassé celle des ordinateurs de bureau en 2016.
Utilisation d'Internet dans le monde (source - broadbandsearch.net )
Cela nous indique sans Ă©quivoque Ă quel point la taille des bundles de projets Web est aujourd'hui importante. La taille des fichiers tĂ©lĂ©chargĂ©s doit ĂȘtre aussi petite que possible afin d'Ă©conomiser les ressources des utilisateurs mobiles. Heureusement pour nous, les dĂ©veloppeurs des principaux outils frontaux et des modules complĂ©mentaires en tiennent compte lors du dĂ©veloppement de leurs projets. RĂ©duire la taille des bundles d'applications signifie Ă©galement de meilleures performances.
- Angulaire. Les bundles d'applications angulaires sont faciles et pratiques Ă examiner avec webpack-bundle-analyzer . De plus, la CLI angulaire nous offre une option
stats-json
qui nous permet de générer un rapport aprÚs la création d'un bundle. - React. Create React App , .
- Vue. Vue, Angular,
report
, .
â- -
Un service worker est un script qui s'exécute dans un navigateur Web et gÚre la mise en cache des données d'application. C'est l'un des mécanismes utilisés pour transformer un site Web régulier en une application Web progressive (PWA). Vous pouvez travailler avec des PWA comme un site Web ordinaire en utilisant HTTPS, mais les Progressive Web Apps ont des fonctionnalités spéciales. Ces capacités comprennent, par exemple, l'installation de telles applications sur des appareils mobiles sans avoir à les publier dans des magasins d'applications spécialisés et la prise en charge du fonctionnement d'applications sans accÚs à Internet.
Vous pouvez utiliser des services workers dans Angular, React et Vue:
- Angulaire. Angular fournit des mécanismes pour utiliser les techniciens de service.
- Réagir. Voici un tutoriel sur la façon de développer une PWA avec Create React App.
- Vue. La possibilité de créer des PWA dans Vue est prise en charge au niveau de la CLI.
âRendu serveur
Server-Side Rendering (SSR) est un ensemble de technologies qui rĂ©volutionnent le dĂ©veloppement d'applications basĂ©es sur Angular, React et Vue. Avec SSR, le HTML est gĂ©nĂ©rĂ© sur le serveur et envoyĂ© au navigateur. AprĂšs cela, le balisage HTML statique est mis en Ă©tat de fonctionnement et l'application Web est complĂštement prĂȘte Ă ĂȘtre utilisĂ©e sur le client. Il y a plusieurs objectifs lors de l'utilisation du rendu serveur:
- Amélioration des sites SEO.
- Accélération de l'affichage des sites dans le navigateur.
Voici les solutions SSR pour les outils frontaux que nous recherchons:
- Angulaire. Il a utilisé Angular Universal .
- Réagir. Pour le rendu cÎté serveur des applications React, Next.js est utilisé .
- Vue. Le rendu cÎté serveur des applications Vue est effectué à l'aide du framework NuxtJS .
âGĂ©nĂ©rateurs de sites statiques
Avec l'utilisation croissante de Jamstack , les gĂ©nĂ©rateurs de sites statiques (SSG) sont devenus une technologie trĂšs recherchĂ©e. Une application Jamstack est un type d'application Web qui est prĂȘte pour le navigateur et qui n'a essentiellement pas besoin d'un serveur Web (ces documents peuvent ĂȘtre servis aux clients directement Ă partir du CDN). Des dĂ©tails sur ces sites peuvent ĂȘtre trouvĂ©s en suivant le lien ci-dessus. Nous n'Ă©numĂ©rons ici que les principaux atouts de SSG:
- Vitesse: les générateurs de site statiques créent des pages de site pendant la génération du projet, pas lorsque ces pages sont demandées par le client.
- Sécurité: l'utilisation de SSG permet d'abandonner les systÚmes de gestion de contenu (CMS, Content Management System), qui sont souvent la cible d'attaques de pirates.
- Simplifier la mise Ă l'Ă©chelle: un projet Web utilisant SSG est un ensemble de fichiers qui peuvent ĂȘtre transfĂ©rĂ©s vers un client de n'importe oĂč. Cela facilite grandement le stockage de ces fichiers sur un CDN. En consĂ©quence, il s'avĂšre que les sites statiques Ă©voluent trĂšs bien.
- Processus de développement simplifié: les projets SSG n'ont pas besoin d'un backend et d'une base de données. Cela facilite la tùche des développeurs.
Il existe des solutions SSG pour Angular, React et Vue:
Les autres projets SSG sont les suivants: 11ty , Hugo , Jekyll .
Analytique
âSurveillance du comportement des utilisateurs et tests A / B
L'observation du comportement des utilisateurs sur le site est facultative, mais la possession de telles données contribue de maniÚre significative à l'amélioration des projets web. Il existe une classe spéciale d'outils conçus pour collecter des informations sur la maniÚre dont les utilisateurs interagissent avec le site. Ces outils permettent aux développeurs de sites de mieux prendre en compte les besoins des utilisateurs et, grùce à des tests A / B, aident à choisir les alternatives les plus appropriées. Nous parlons des capacités des sites, des modÚles de comportement des utilisateurs qu'ils soutiennent, de la conception.
Voici quelques solutions pour surveiller le comportement des utilisateurs et les tests A / B:
- Google Analytics (GA). Il existe des guides d'utilisation de GA dans Angular , React et Vue .
- Kameleoon. â A/B- -.
â -
Il est difficile de dĂ©velopper une application Web performante en une seule fois. Mais, par exemple, une application qui a Ă©tĂ© optimisĂ©e pour accĂ©lĂ©rer son chargement gĂ©nĂ©rera plus d'Ă©motions positives de la part de l'utilisateur que sa version plus lente. Il existe diffĂ©rents projets qui analysent les sites et donnent des recommandations pour leur amĂ©lioration. Par exemple - PageSpeed ââInsights de Google.
Parmi les outils de développement de Google Chrome, vous pouvez trouver un outil trÚs précieux pour analyser les performances du site - Lighthouse . Il évalue les sites sur cinq critÚres (performances, accessibilité, bonnes pratiques, SEO, PWA) sur une échelle de 100 points. AprÚs l'analyse, un rapport est généré avec des recommandations pour l'amélioration du site.
Analyse d'un site avec Lighthouse
Un autre analyseur de performances que vous pouvez trouver parmi les outils de développement Chrome est le panneau Couverture , qui vous permet de rechercher du code JS et CSS inutilisé. En excluant ce code du projet, vous pouvez réduire la taille de son bundle. Cela accélérera le chargement du site, ce qui sera particuliÚrement visible sur les appareils mobiles.
âSEO
Le rĂ©fĂ©rencement, l'optimisation des moteurs de recherche, c'est ce que vous devez faire pour augmenter le classement d'un site dans les moteurs de recherche, tels que Google, Bing, DuckDuckGo, et bien d'autres. Un site bien optimisĂ© devient plus visible. En fait, il est si important que dans le monde du dĂ©veloppement Web, il existe mĂȘme une position particuliĂšre: «SpĂ©cialiste SEO».
Si nous parlons de SEO dans Angular, React et Vue, alors nous obtenons ce qui suit:
Je conviens que le dĂ©veloppement frontal est un domaine d'expertise vaste et en constante Ă©volution. En fait, si quelqu'un essaie de devenir un dĂ©veloppeur universel qui sait tout et sait comment, il lui sera extrĂȘmement difficile d'y parvenir, et cela lui prendra beaucoup de temps. De plus, chaque projet Web a ses propres besoins et prioritĂ©s. C'est pourquoi il est nĂ©cessaire de dĂ©cider du plus important au dĂ©but du travail sur un projet. Cela vous permettra de ne pas ĂȘtre dispersĂ©, de sĂ©lectionner et d'Ă©tudier uniquement les plus nĂ©cessaires, et de planifier l'architecture du projet pour qu'il corresponde Ă ses objectifs.
Selon vous, quelles nouvelles technologies de développement frontales sont les plus prometteuses?