Ce projet créé par create-react-app a une organisation typique :
frontend/
├── public/
├── src/
├── node_modules/
├── package.json
├── package-lock.json
├── tsconfig.json
└── ...
Ce dossier contient :
public/Fichiers statiques, accessible directement par le serveur web :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8" />
<title>Ma Première Application Web</title>
</head>
<body>
<div id="root"></div>
</body>
</html>
C’est la page HTML de base contenant <div id="root"> où React monte l’application.
Ce fichier ne sera pas modifié par Webpack, il sert de template d’accueil.
src/Tout le code React, composants, styles, logique métier :
Ce zoom vous aide à structurer votre dossier :
App.tsxComposant racine de l’application React :
function App() {
return (
<div className="App">
<h1>Bienvenue dans mon app !</h1>
</div>
);
}
export default App;
Ce composant organise la structure principale de votre site ou application.
Il peut inclure des routes, des barres de navigation, etc.
index.tsxPoint d’entrée de React, il monte le composant App dans le DOM :
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement);
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
Ce fichier initialise React et affiche le composant racine dans <div id="root">.
Il utilise ReactDOM.createRoot et le mode Strict pour le développement.
package.jsonContient :
Exemple :
{
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test"
},
"dependencies": {
"react": "^18.0.0",
"react-dom": "^18.0.0",
"typescript": "^4.9.0"
}
}
tsconfig.jsonConfigure TypeScript pour le projet :
{
"compilerOptions": {
"target": "es2020",
"jsx": "react-jsx",
"strict": true
}
}
Ce fichier définit :
Ce guide vous aide à comprendre la structure d’un projet React/TypeScript, avec ses composants clés et leur rôle.
Les sections "zoom" approfondissent chaque aspect pour mieux maîtriser leur fonctionnement.