Technologies de dĂ©veloppement front-end que vous n'avez peut-ĂȘtre pas remarquĂ©es

"Si vous voulez vivre, soyez capable de tourner." Il s'agit du travail d'un programmeur frontal. Pour s'acquitter de ses tĂąches avec succĂšs, un tel spĂ©cialiste doit rĂ©soudre de nombreux problĂšmes et doit avoir de nombreuses capacitĂ©s. De plus, il est trĂšs important de ne pas oublier l'objectif principal pour lequel les sites Web sont dĂ©veloppĂ©s. À savoir, que les sites devraient aider les gens Ă  simplifier leurs tĂąches quotidiennes.







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=enou comme ceci: example.com/enou 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 TABet 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:





▍ 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-jsonqui 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:





▍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:



  • Angular. , Angular- Angular Universal-.
  • React. SEO React-. — React-.
  • Vue. Vue-.




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?






All Articles