SlideShare a Scribd company logo
1 of 13
Download to read offline
Créez une application React complète
12 heures
 Moyenne
Mis à jour le 24/11/2021
 
Architecturez votre projet
C'est parti pour créer une application complète avec React ! 🚀 Dans ce cours, nous allons
construire ensemble le site pour l'agence de freelances Shiny. Comme vous pouvez le voir dans la
maquette Figma, ce site comporte plusieurs fonctionnalités que nous construirons au fur et à
mesure des notions maîtrisées. Comme pour tout projet, il faut bien commencer par quelque
part : lançons-nous donc dans l'initialisation de notre app et la découverte d’ESLint et Prettier !
Pour initialiser notre application, nous allons utiliser Create React App (CRA).
Installez votre app avec Create React App

Comme vous l’avez probablement déjà fait, je passerai rapidement sur les commandes, et
sur pourquoi utiliser CRA. N'hésitez pas à jeter un œil au chapitre "Prenez en main Create
Accueil
> Cours
> Créez une application React complète
> Architecturez votre projet
Dans votre terminal, placez-vous dans le dossier où vous souhaitez créer votre projet. Comme
pour le premier cours, je me place dans le dossier   workflow   au même niveau que Downloads,
Documents, etc., dans lequel je mets tous mes projets de code.
Et je fais :
Magnifique, n'est-ce pas ? 🤩
React App" si vous avez le moindre doute, ou si vous voulez en apprendre davantage sur
cet outil.
npx create-react-app shiny-agency
C’est parti pour Shiny Agency !
Maintenant que nous avons la base de notre projet, nous allons pouvoir nous décider sur son
architecture.
Pas de panique ! Ici, je ne vais pas vous parler de patterns complexes. L’idée est juste de suivre des
règles logiques et suffisamment claires pour que vous sachiez où placer les fichiers que vous
créez, et où retrouver ceux dont vous avez besoin dans votre codebase. D’ailleurs, dans la
documentation React sur la structure de fichiers, React laisse la liberté aux développeurs quant à
la structure de leur projet.
Dans le chapitre "Prenez en main Create React App” du cours précédent, nous avions organisé le
code de sorte à regrouper les fichiers par type : chaque fichier correspondait à un composant
situé dans le dossier   /components   . Les fichiers CSS, quant à eux, se trouvaient dans le dossier  
/style   , etc.
Ici, nous allons organiser nos fichiers en suivant la même logique, sauf qu'il faudra ajouter un
dossier pour les "pages", qui regroupera les composants vers lesquels chacune de nos routes
renverra (pas de panique si vous ne savez pas ce qu'est une route, on verra ça au prochain
chapitre 😉).
Commençons donc par créer un dossier   /components   et un dossier   pages   dans   src   .
Dans   /pages   , on met   App.js   , qu'on renomme en   Home.jsx   .
On n'oublie pas de mettre à jour les paths des imports, par exemple dans   index.js   :
Ce qui nous donne…
Architecturez votre projet par modules

... son architecture ? Une architecture même en front ?!
Lorsque vous utilisez des frameworks tels que Next ou Gatsby, une structure de fichiers
toute faite vous sera déjà proposée. Je vous conseille d'y jeter un œil si vous avez
l'occasion !
javascript
import Home from './pages/Home;

├── README.md
├── node_modules
...
├── package.json
├── public
...
├── src
1
Eh bien, ici, pas d'obligation d'utiliser l'extension   .jsx   . Votre fichier React fonctionnera très
bien aussi avec une extension   .js   , mais puisqu'on peut l'utiliser, autant être explicite, n'est-ce
pas ? Ainsi, vous voyez en un coup d'œil quand votre fichier contient du React, et quand il n'en
contient pas. 👀
Ce qui est important pour nous est de pouvoir retrouver rapidement nos fichiers. Pour les
architectures, il n'existe pas de solution parfaite à utiliser dans tous les cas. Nous devons donc
essayer de trouver une organisation qui convienne. Ici, nous aurons relativement peu de fichiers,
donc une structure par type devrait bien fonctionner.
Les approches sont multiples. Lorsque vous travaillez sur une application complexe, avec
plusieurs grosses fonctionnalités, vous pouvez envisager un découpage selon les fonctionnalités,
par exemple. Vous trouverez un petit exemple de ce type d'organisation dans la documentation
React.
Un autre type d'organisation qui fonctionne bien ces dernières années est la création et
l'organisation des composants selon les principes de l'atomic design, qui facilite la collaboration
avec les designers (si vous êtes curieux, vous pouvez regarder le cours Initez-vous à la méthode
atomic design !). Mais dans notre cas, l'application n'a pas vocation à être très grande, et
l'utilisation d'une telle structure pourrait paraître superflue. C'est pourquoi nous avons choisi
d'organiser le projet de ce cours par type de fichier, afin de s'approcher au maximum de ce qui
aurait été fait en entreprise.
│   ├── index.js
│   └── pages
│       └── Home.jsx
└── yarn.lock
… quoi ? .jsx ? Depuis quand on a besoin d'une extension de fichier particulière pour
coder en React !? 
Entre le cours précédent et celui-là, ça fait deux fois qu'on utilise la même structure.
Qu'est-ce qu'on aurait pu faire d'autre ?
Dans notre codebase, nous allons organiser nos fichiers de sorte à avoir  
/NomDuComposant/index.jsx   . Cette approche présente des avantages (notamment de
ne pas avoir à nous répéter lorsqu'on importe nos fichiers), mais peut aussi paraître un
peu désorganisée dans tous vos onglets d'IDE. Comme pour tout en code, il existe
plusieurs manières de faire ; à vous de voir ce qui vous convient, et de vous adapter
lorsque vous travaillez sur une codebase qui est un peu différente. Si ce sujet vous
Et voilà pour notre architecture ! Penchons-nous maintenant sur quelques outils qui nous
permettent d'écrire du code plus proprement et d'éviter des erreurs communes.
Pour ce qui est des erreurs de code, ou tout simplement de la mise en forme, vous le savez
sûrement déjà, JavaScript est très souple : pas de compilation stricte qui vous signale vos
erreurs. Heureusement, il existe des outils qui permettent d'écrire du code plus propre !
Eh bien, vous vous en sortez bien actuellement, sur une codebase plutôt petite et en travaillant
seul. Mais imaginez que vous travailliez dans une équipe, dans laquelle chacun a son propre style
de code (mettre des points-virgules ou non, les règles d'indentation, etc.). Croyez-moi, ce n'est
vraiment pas efficace. 🙈
Dans notre cas, nous allons nous intéresser à ESLint, qui va vous signaler des erreurs dans le code
(aussi bien des erreurs de style que des erreurs basiques de code qui peuvent conduire à des
bugs), et Prettier, qui va le formater.
Sécurisez votre code avec ESLint et son extension
intéresse, vous pourrez en apprendre davantage sur l'organisation et le nommage des
fichiers dans cet article (en anglais).
Exploitez les outils ESLint et Prettier

Écrire du code plus proprement ? Pourquoi perdre du temps à configurer des outils, alors
que je m'en sors très bien comme ça ?
02:52
Commençons donc par ESLint.
Si vous regardez votre   package.json   , vous verrez qu'ESLint fait déjà partie des outils
préconfigurés par Create React App. Cet outil permet de vous signaler des erreurs de code – si
vous utilisez une variable qui n'a jamais été déclarée, par exemple.
Testons dès maintenant. Dans  Home/index.jsx   , je rajoute une ligne de code en faisant un
console.log d'une variable non déclarée juste avant le  return   :
Rien de spécial ne s'affiche. Pourtant, la variable n'est pas déclarée, donc c'est bien une erreur. 🤔
... Mais si vous n'avez pas encore installé l'extension ESLint dans votre éditeur de code (IDE), rien
ne se passe.
Installons donc l'extension. Pour ma part, j'utilise VS Code qui me permet d'installer une
extension directement dans l'onglet "Extensions" (cela dépend de l'IDE que vous utilisez). Une fois
l'extension installée, votre éditeur de code devrait souligner votre erreur, comme ici.
Et voilà, la configuration est prête. Dans le screencast ci-dessous, nous allons en apprendre
davantage sur ESLint.
javascript
console.log(ceciEstUneErreur)

La voilà notre erreur !
1
Formatez votre code avec Prettier
Alors qu'ESLint vous permet de relever des erreurs de syntaxe, Prettier est la référence pour
formater votre code. Contrairement à ESLint, Prettier n'est pas installé de base avec Create-
React-App.
Pour vous donner une idée de la puissance de cet outil, regardez un peu ce GIF 👇 :
03:43
Pas mal, n'est-ce pas ? Alors, lançons-nous dans la config ! Pour commencer, vous pouvez
installer la library (bibliothèque) dans votre terminal avec   yarn add -D prettier   .
À partir de là, l'outil est installé, mais nous devons le lancer manuellement – alors que nous
voulons que Prettier fasse tout à notre place sans même avoir à y penser ! La manière la plus
simple est d'installer l'extension de Prettier directement dans les extensions de votre IDE.
Pour ma part, dans VSCode, j'installe l'extension.
Il vous suffit d'aller dans les paramètres de votre IDE (   Code   >   Preferences   >   Settings  
) pour activer la commande   formatOnSave   . Elle permettra de formater le fichier à chaque fois
que vous sauvegardez. Yay ! 🎉
Vous pouvez également aller dans la barre de recherche de votre IDE, taper "format" et activer  
formatOnSave   :
Mais attendez, on n'a pas encore fini ! Nous allons aussi activer l'option qui permet d'éviter de
modifier tous les fichiers à tort et à travers.
Tapez   require config   et descendez sur le paramètre correspondant à Prettier. Activez le
paramètre comme ci-dessous :
Bien pratique de tout formater en un clic, n'est-ce pas ?
OK super ! Et maintenant ? 🤔
L’extension Prettier dans VSCode
Le paramétrage à activer dans VSCode pour formater en sauvegardant
Cela permet de préciser à VSCode de formater le fichier uniquement quand une configuration est
présente dans le projet pour Prettier.
Donc à nous d'en créer une !
À la racine de votre projet, créez un fichier   .prettierrc   dans lequel vous allez pouvoir
préciser quelques règles. Vous trouverez l'ensemble de ces règles dans la documentation de
Prettier. Typiquement, si vous voulez supprimer tous les points-virgules, vous faites :
Et voilà, si vous retournez dans votre fichier   Home/index.jsx   , vous avez bien :
Activez cette option dans vos paramètres pour formater uniquement les
fichiers qui ont une config Prettier
javascript
{

"semi": false

}

1
2
3
Félicitations ! Vous venez de configurer avec succès ESLint et Prettier avec leurs extensions, vous
n'aurez plus à vous soucier du formatage de votre code ou bien de faire des erreurs
d'inattention ! 🤗
C'est maintenant le moment de passer à la pratique par vos propres moyens !
Au revoir les points-virgules !
Exercez-vous !

Dans le chapitre précédent, je vous avais parlé de notre exercice fil rouge : créer le site pour
l'agence de freelances Shiny.
Eh bien au travail !
Vous allez dès maintenant créer la base de code du projet. Voici les premières étapes :
Initialiser le projet avec Create React App.
Renommer le fichier   index.js   à la racine de   /src   en   index.jsx   .
Créer un dossier   /components   et un dossier   /pages   dans   /src   .
Déplacer le fichier   App.js   dans   /Pages   , y créer un dossier   /Home   et le
renommer en   index.jsx   .
Supprimer les fichiers que vous n'estimez pas utiles pour le moment.
Installer et configurer Prettier de sorte à avoir :
Modifier les fichiers JavaScript en fonction du style défini dans   .prettierrc   .
Vous trouverez la solution de l’exercice sur le repository GitHub de ce cours, sur la branche P1C1-
Solution.
Lorsque vous initialisez un projet, il est important de réfléchir un minimum à son
organisation. 
javascript
{

"semi":false,

"singleQuote": true,

"tabWidth": 2

}

En résumé

1
2
3
4
5
ESLint est un outil permettant de signaler les erreurs de code. Combiné avec son extension
dans votre éditeur de code, cela vous permet de repérer instantanément vos erreurs.
Prettier est l'outil de formatage de code de référence pour faciliter la collaboration sur une
codebase.
Alors, ça vous a plu d'initialiser votre projet, de l'organiser et d'utiliser des outils indispensables
pour travailler en entreprise ? Ça tombe bien, parce que dans le prochain chapitre, vous allez
apprendre à sécuriser vos props avec les propTypes !
On se retrouve tout de suite ! 🚀
INDIQUER QUE CE CHAPITRE N'EST PAS TERMINÉ
TIREZ LE MAXIMUM DE CE COURS

TRANSFORMEZ VOTRE APPLICATION
EN SINGLE PAGE APPLICATION AVEC
REACT ROUTER

Le professeur
Développeuse Fullstack React/Node freelance passionnée par le frontend 👩‍💻
Alexia Toulmet
OPENCLASSROOMS
OPPORTUNITÉS
AIDE
POUR LES ENTREPRISES
EN PLUS
Français
 
Architecturez votre projet   créez une application react complète - open classrooms

More Related Content

Similar to Architecturez votre projet créez une application react complète - open classrooms

Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]GDSC UofT Mississauga
 
How to Create a Custom WordPress Plugin
How to Create a Custom WordPress PluginHow to Create a Custom WordPress Plugin
How to Create a Custom WordPress PluginAndolasoft Inc
 
WordCamp Asheville 2017 - So You Wanna Dev? Join the Team!
WordCamp Asheville 2017 - So You Wanna Dev? Join the Team!WordCamp Asheville 2017 - So You Wanna Dev? Join the Team!
WordCamp Asheville 2017 - So You Wanna Dev? Join the Team!Evan Mullins
 
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...Andrey Karpov
 
PVS-Studio Has Finally Got to Boost
PVS-Studio Has Finally Got to BoostPVS-Studio Has Finally Got to Boost
PVS-Studio Has Finally Got to BoostAndrey Karpov
 
Workshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdfWorkshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdfTobiasGoeschel
 
7 crazy tips that will help you
7 crazy tips that will help you7 crazy tips that will help you
7 crazy tips that will help youJessica Wilson
 
From Ant to Rake
From Ant to RakeFrom Ant to Rake
From Ant to Rakejazzman1980
 
So, You Wanna Dev? Join the Team! - WordCamp Raleigh 2017
So, You Wanna Dev? Join the Team! - WordCamp Raleigh 2017 So, You Wanna Dev? Join the Team! - WordCamp Raleigh 2017
So, You Wanna Dev? Join the Team! - WordCamp Raleigh 2017 Evan Mullins
 
War of the Machines: PVS-Studio vs. TensorFlow
War of the Machines: PVS-Studio vs. TensorFlowWar of the Machines: PVS-Studio vs. TensorFlow
War of the Machines: PVS-Studio vs. TensorFlowPVS-Studio
 
How create react app help in creating a new react applications
How create react app help in creating a new react applications How create react app help in creating a new react applications
How create react app help in creating a new react applications Concetto Labs
 
Best Practices to Ace ReactJS Web Development!
Best Practices to Ace ReactJS Web Development!Best Practices to Ace ReactJS Web Development!
Best Practices to Ace ReactJS Web Development!Inexture Solutions
 
We continue checking Microsoft projects: analysis of PowerShell
We continue checking Microsoft projects: analysis of PowerShellWe continue checking Microsoft projects: analysis of PowerShell
We continue checking Microsoft projects: analysis of PowerShellPVS-Studio
 

Similar to Architecturez votre projet créez une application react complète - open classrooms (20)

Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]
 
Fewd week4 slides
Fewd week4 slidesFewd week4 slides
Fewd week4 slides
 
How to Create a Custom WordPress Plugin
How to Create a Custom WordPress PluginHow to Create a Custom WordPress Plugin
How to Create a Custom WordPress Plugin
 
WordCamp Asheville 2017 - So You Wanna Dev? Join the Team!
WordCamp Asheville 2017 - So You Wanna Dev? Join the Team!WordCamp Asheville 2017 - So You Wanna Dev? Join the Team!
WordCamp Asheville 2017 - So You Wanna Dev? Join the Team!
 
INTRODUCTIONS OF HTML
INTRODUCTIONS OF HTMLINTRODUCTIONS OF HTML
INTRODUCTIONS OF HTML
 
django
djangodjango
django
 
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
 
PVS-Studio Has Finally Got to Boost
PVS-Studio Has Finally Got to BoostPVS-Studio Has Finally Got to Boost
PVS-Studio Has Finally Got to Boost
 
Workshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdfWorkshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdf
 
LVPHP.org
LVPHP.orgLVPHP.org
LVPHP.org
 
7 crazy tips that will help you
7 crazy tips that will help you7 crazy tips that will help you
7 crazy tips that will help you
 
Class 1
Class 1Class 1
Class 1
 
Class 1
Class 1Class 1
Class 1
 
From Ant to Rake
From Ant to RakeFrom Ant to Rake
From Ant to Rake
 
So, You Wanna Dev? Join the Team! - WordCamp Raleigh 2017
So, You Wanna Dev? Join the Team! - WordCamp Raleigh 2017 So, You Wanna Dev? Join the Team! - WordCamp Raleigh 2017
So, You Wanna Dev? Join the Team! - WordCamp Raleigh 2017
 
Fame
FameFame
Fame
 
War of the Machines: PVS-Studio vs. TensorFlow
War of the Machines: PVS-Studio vs. TensorFlowWar of the Machines: PVS-Studio vs. TensorFlow
War of the Machines: PVS-Studio vs. TensorFlow
 
How create react app help in creating a new react applications
How create react app help in creating a new react applications How create react app help in creating a new react applications
How create react app help in creating a new react applications
 
Best Practices to Ace ReactJS Web Development!
Best Practices to Ace ReactJS Web Development!Best Practices to Ace ReactJS Web Development!
Best Practices to Ace ReactJS Web Development!
 
We continue checking Microsoft projects: analysis of PowerShell
We continue checking Microsoft projects: analysis of PowerShellWe continue checking Microsoft projects: analysis of PowerShell
We continue checking Microsoft projects: analysis of PowerShell
 

Recently uploaded

Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 

Architecturez votre projet créez une application react complète - open classrooms

  • 1. Créez une application React complète 12 heures  Moyenne Mis à jour le 24/11/2021   Architecturez votre projet C'est parti pour créer une application complète avec React ! 🚀 Dans ce cours, nous allons construire ensemble le site pour l'agence de freelances Shiny. Comme vous pouvez le voir dans la maquette Figma, ce site comporte plusieurs fonctionnalités que nous construirons au fur et à mesure des notions maîtrisées. Comme pour tout projet, il faut bien commencer par quelque part : lançons-nous donc dans l'initialisation de notre app et la découverte d’ESLint et Prettier ! Pour initialiser notre application, nous allons utiliser Create React App (CRA). Installez votre app avec Create React App  Comme vous l’avez probablement déjà fait, je passerai rapidement sur les commandes, et sur pourquoi utiliser CRA. N'hésitez pas à jeter un œil au chapitre "Prenez en main Create Accueil > Cours > Créez une application React complète > Architecturez votre projet
  • 2. Dans votre terminal, placez-vous dans le dossier où vous souhaitez créer votre projet. Comme pour le premier cours, je me place dans le dossier   workflow   au même niveau que Downloads, Documents, etc., dans lequel je mets tous mes projets de code. Et je fais : Magnifique, n'est-ce pas ? 🤩 React App" si vous avez le moindre doute, ou si vous voulez en apprendre davantage sur cet outil. npx create-react-app shiny-agency C’est parti pour Shiny Agency !
  • 3. Maintenant que nous avons la base de notre projet, nous allons pouvoir nous décider sur son architecture. Pas de panique ! Ici, je ne vais pas vous parler de patterns complexes. L’idée est juste de suivre des règles logiques et suffisamment claires pour que vous sachiez où placer les fichiers que vous créez, et où retrouver ceux dont vous avez besoin dans votre codebase. D’ailleurs, dans la documentation React sur la structure de fichiers, React laisse la liberté aux développeurs quant à la structure de leur projet. Dans le chapitre "Prenez en main Create React App” du cours précédent, nous avions organisé le code de sorte à regrouper les fichiers par type : chaque fichier correspondait à un composant situé dans le dossier   /components   . Les fichiers CSS, quant à eux, se trouvaient dans le dossier   /style   , etc. Ici, nous allons organiser nos fichiers en suivant la même logique, sauf qu'il faudra ajouter un dossier pour les "pages", qui regroupera les composants vers lesquels chacune de nos routes renverra (pas de panique si vous ne savez pas ce qu'est une route, on verra ça au prochain chapitre 😉). Commençons donc par créer un dossier   /components   et un dossier   pages   dans   src   . Dans   /pages   , on met   App.js   , qu'on renomme en   Home.jsx   . On n'oublie pas de mettre à jour les paths des imports, par exemple dans   index.js   : Ce qui nous donne… Architecturez votre projet par modules  ... son architecture ? Une architecture même en front ?! Lorsque vous utilisez des frameworks tels que Next ou Gatsby, une structure de fichiers toute faite vous sera déjà proposée. Je vous conseille d'y jeter un œil si vous avez l'occasion ! javascript import Home from './pages/Home; ├── README.md ├── node_modules ... ├── package.json ├── public ... ├── src 1
  • 4. Eh bien, ici, pas d'obligation d'utiliser l'extension   .jsx   . Votre fichier React fonctionnera très bien aussi avec une extension   .js   , mais puisqu'on peut l'utiliser, autant être explicite, n'est-ce pas ? Ainsi, vous voyez en un coup d'œil quand votre fichier contient du React, et quand il n'en contient pas. 👀 Ce qui est important pour nous est de pouvoir retrouver rapidement nos fichiers. Pour les architectures, il n'existe pas de solution parfaite à utiliser dans tous les cas. Nous devons donc essayer de trouver une organisation qui convienne. Ici, nous aurons relativement peu de fichiers, donc une structure par type devrait bien fonctionner. Les approches sont multiples. Lorsque vous travaillez sur une application complexe, avec plusieurs grosses fonctionnalités, vous pouvez envisager un découpage selon les fonctionnalités, par exemple. Vous trouverez un petit exemple de ce type d'organisation dans la documentation React. Un autre type d'organisation qui fonctionne bien ces dernières années est la création et l'organisation des composants selon les principes de l'atomic design, qui facilite la collaboration avec les designers (si vous êtes curieux, vous pouvez regarder le cours Initez-vous à la méthode atomic design !). Mais dans notre cas, l'application n'a pas vocation à être très grande, et l'utilisation d'une telle structure pourrait paraître superflue. C'est pourquoi nous avons choisi d'organiser le projet de ce cours par type de fichier, afin de s'approcher au maximum de ce qui aurait été fait en entreprise. │   ├── index.js │   └── pages │       └── Home.jsx └── yarn.lock … quoi ? .jsx ? Depuis quand on a besoin d'une extension de fichier particulière pour coder en React !?  Entre le cours précédent et celui-là, ça fait deux fois qu'on utilise la même structure. Qu'est-ce qu'on aurait pu faire d'autre ? Dans notre codebase, nous allons organiser nos fichiers de sorte à avoir   /NomDuComposant/index.jsx   . Cette approche présente des avantages (notamment de ne pas avoir à nous répéter lorsqu'on importe nos fichiers), mais peut aussi paraître un peu désorganisée dans tous vos onglets d'IDE. Comme pour tout en code, il existe plusieurs manières de faire ; à vous de voir ce qui vous convient, et de vous adapter lorsque vous travaillez sur une codebase qui est un peu différente. Si ce sujet vous
  • 5. Et voilà pour notre architecture ! Penchons-nous maintenant sur quelques outils qui nous permettent d'écrire du code plus proprement et d'éviter des erreurs communes. Pour ce qui est des erreurs de code, ou tout simplement de la mise en forme, vous le savez sûrement déjà, JavaScript est très souple : pas de compilation stricte qui vous signale vos erreurs. Heureusement, il existe des outils qui permettent d'écrire du code plus propre ! Eh bien, vous vous en sortez bien actuellement, sur une codebase plutôt petite et en travaillant seul. Mais imaginez que vous travailliez dans une équipe, dans laquelle chacun a son propre style de code (mettre des points-virgules ou non, les règles d'indentation, etc.). Croyez-moi, ce n'est vraiment pas efficace. 🙈 Dans notre cas, nous allons nous intéresser à ESLint, qui va vous signaler des erreurs dans le code (aussi bien des erreurs de style que des erreurs basiques de code qui peuvent conduire à des bugs), et Prettier, qui va le formater. Sécurisez votre code avec ESLint et son extension intéresse, vous pourrez en apprendre davantage sur l'organisation et le nommage des fichiers dans cet article (en anglais). Exploitez les outils ESLint et Prettier  Écrire du code plus proprement ? Pourquoi perdre du temps à configurer des outils, alors que je m'en sors très bien comme ça ? 02:52
  • 6. Commençons donc par ESLint. Si vous regardez votre   package.json   , vous verrez qu'ESLint fait déjà partie des outils préconfigurés par Create React App. Cet outil permet de vous signaler des erreurs de code – si vous utilisez une variable qui n'a jamais été déclarée, par exemple. Testons dès maintenant. Dans  Home/index.jsx   , je rajoute une ligne de code en faisant un console.log d'une variable non déclarée juste avant le  return   : Rien de spécial ne s'affiche. Pourtant, la variable n'est pas déclarée, donc c'est bien une erreur. 🤔 ... Mais si vous n'avez pas encore installé l'extension ESLint dans votre éditeur de code (IDE), rien ne se passe. Installons donc l'extension. Pour ma part, j'utilise VS Code qui me permet d'installer une extension directement dans l'onglet "Extensions" (cela dépend de l'IDE que vous utilisez). Une fois l'extension installée, votre éditeur de code devrait souligner votre erreur, comme ici. Et voilà, la configuration est prête. Dans le screencast ci-dessous, nous allons en apprendre davantage sur ESLint. javascript console.log(ceciEstUneErreur) La voilà notre erreur ! 1
  • 7. Formatez votre code avec Prettier Alors qu'ESLint vous permet de relever des erreurs de syntaxe, Prettier est la référence pour formater votre code. Contrairement à ESLint, Prettier n'est pas installé de base avec Create- React-App. Pour vous donner une idée de la puissance de cet outil, regardez un peu ce GIF 👇 : 03:43
  • 8. Pas mal, n'est-ce pas ? Alors, lançons-nous dans la config ! Pour commencer, vous pouvez installer la library (bibliothèque) dans votre terminal avec   yarn add -D prettier   . À partir de là, l'outil est installé, mais nous devons le lancer manuellement – alors que nous voulons que Prettier fasse tout à notre place sans même avoir à y penser ! La manière la plus simple est d'installer l'extension de Prettier directement dans les extensions de votre IDE. Pour ma part, dans VSCode, j'installe l'extension. Il vous suffit d'aller dans les paramètres de votre IDE (   Code   >   Preferences   >   Settings   ) pour activer la commande   formatOnSave   . Elle permettra de formater le fichier à chaque fois que vous sauvegardez. Yay ! 🎉 Vous pouvez également aller dans la barre de recherche de votre IDE, taper "format" et activer   formatOnSave   : Mais attendez, on n'a pas encore fini ! Nous allons aussi activer l'option qui permet d'éviter de modifier tous les fichiers à tort et à travers. Tapez   require config   et descendez sur le paramètre correspondant à Prettier. Activez le paramètre comme ci-dessous : Bien pratique de tout formater en un clic, n'est-ce pas ? OK super ! Et maintenant ? 🤔 L’extension Prettier dans VSCode Le paramétrage à activer dans VSCode pour formater en sauvegardant
  • 9. Cela permet de préciser à VSCode de formater le fichier uniquement quand une configuration est présente dans le projet pour Prettier. Donc à nous d'en créer une ! À la racine de votre projet, créez un fichier   .prettierrc   dans lequel vous allez pouvoir préciser quelques règles. Vous trouverez l'ensemble de ces règles dans la documentation de Prettier. Typiquement, si vous voulez supprimer tous les points-virgules, vous faites : Et voilà, si vous retournez dans votre fichier   Home/index.jsx   , vous avez bien : Activez cette option dans vos paramètres pour formater uniquement les fichiers qui ont une config Prettier javascript { "semi": false } 1 2 3
  • 10. Félicitations ! Vous venez de configurer avec succès ESLint et Prettier avec leurs extensions, vous n'aurez plus à vous soucier du formatage de votre code ou bien de faire des erreurs d'inattention ! 🤗 C'est maintenant le moment de passer à la pratique par vos propres moyens ! Au revoir les points-virgules ! Exercez-vous ! 
  • 11. Dans le chapitre précédent, je vous avais parlé de notre exercice fil rouge : créer le site pour l'agence de freelances Shiny. Eh bien au travail ! Vous allez dès maintenant créer la base de code du projet. Voici les premières étapes : Initialiser le projet avec Create React App. Renommer le fichier   index.js   à la racine de   /src   en   index.jsx   . Créer un dossier   /components   et un dossier   /pages   dans   /src   . Déplacer le fichier   App.js   dans   /Pages   , y créer un dossier   /Home   et le renommer en   index.jsx   . Supprimer les fichiers que vous n'estimez pas utiles pour le moment. Installer et configurer Prettier de sorte à avoir : Modifier les fichiers JavaScript en fonction du style défini dans   .prettierrc   . Vous trouverez la solution de l’exercice sur le repository GitHub de ce cours, sur la branche P1C1- Solution. Lorsque vous initialisez un projet, il est important de réfléchir un minimum à son organisation.  javascript { "semi":false, "singleQuote": true, "tabWidth": 2 } En résumé  1 2 3 4 5
  • 12. ESLint est un outil permettant de signaler les erreurs de code. Combiné avec son extension dans votre éditeur de code, cela vous permet de repérer instantanément vos erreurs. Prettier est l'outil de formatage de code de référence pour faciliter la collaboration sur une codebase. Alors, ça vous a plu d'initialiser votre projet, de l'organiser et d'utiliser des outils indispensables pour travailler en entreprise ? Ça tombe bien, parce que dans le prochain chapitre, vous allez apprendre à sécuriser vos props avec les propTypes ! On se retrouve tout de suite ! 🚀 INDIQUER QUE CE CHAPITRE N'EST PAS TERMINÉ TIREZ LE MAXIMUM DE CE COURS  TRANSFORMEZ VOTRE APPLICATION EN SINGLE PAGE APPLICATION AVEC REACT ROUTER  Le professeur Développeuse Fullstack React/Node freelance passionnée par le frontend 👩‍💻 Alexia Toulmet OPENCLASSROOMS OPPORTUNITÉS AIDE POUR LES ENTREPRISES EN PLUS Français