Voilà une idée de l'application que l'on veut réaliser
On cherche à écrire une application capable d'afficher tous les films stockés sur le serveur,
de supprimer des films (avec le bouton "X") et de pouvoir filtrer l'affichage par les premières lettres
du titre des films.
Dans un premier temps, nous avons besoin de deux choses, installer les bibliothèques de React
(
react et
react-dom) et récupérer l'outil
esbuild (un exécutable),
qui transforme les fichiers
.jsx en fichier
.js (et bundle les dépendances).
Pour récuperer
esbuild, nous allons utiliser
npm qui est le gestionnaire
de libraries JavaScript et qui permet aussi de récupérer des exécutables (ce qui est stupide en termes
de sécurité, mais c'est comme cela ...).
npm install --save-exact --save-dev esbuild
La commande
npm ci-dessus installe l'exécutable
esbuild dans le répertoire
./node_modules en locale donc pour exécuter
esbuild, on utilisera la commande
./node_modules/.bin/esbuild --version
Puis on va installer, toujours dans
./node_modules, les deux bibliothèques
react et
react-dom, toujours avec
npm
npm install --save-exact --save-dev react react-dom
On peut maintenant écrire un fichier JSX,
exo1.jsx puis le transpiler en JavaScript avec
esbuild.
On utilise pour cela la commande
./node_modules/.bin/esbuild exo1.jsx --bundle --outfile=exo1.js
Pour démarrer, on va utiliser le fichier
exo1.html suivant
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="icon" href="data:,">
<script src="exo1.js" type="text/javascript"></script>
<style>
</style>
</head>
<body>
<div id="App"></div>
</body>
</html>
Et pour le fichier JSX
exo1.jsx
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
function App() {
return <>
<h1>Movie Database</h1>
<div></div>
</>;
}
window.onload = () => {
let appDOM = document.getElementById("App");
let root = ReactDOM.createRoot(appDOM);
root.render(<App/>);
};
On utilisera de plus le serveur Java
JExpress.java
pour servir les fichiers
exo1.html et
exo1.js et l'API REST spécifique aux films.