<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Non classé &#8211; Laurent Millotte</title>
	<atom:link href="https://laurentmillotte.fr/category/non-classe/feed/" rel="self" type="application/rss+xml" />
	<link>https://laurentmillotte.fr</link>
	<description>Développeur JAVASCRIPT PHP WORDPRESS</description>
	<lastBuildDate>Wed, 10 Jun 2026 16:53:06 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://laurentmillotte.fr/wp-content/uploads/2024/09/cropped-icons8-done-48-32x32.png</url>
	<title>Non classé &#8211; Laurent Millotte</title>
	<link>https://laurentmillotte.fr</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Premier serveur Express</title>
		<link>https://laurentmillotte.fr/premier-serveur-express/</link>
		
		<dc:creator><![CDATA[Laurent Millotte]]></dc:creator>
		<pubDate>Fri, 05 Jun 2026 17:26:59 +0000</pubDate>
				<category><![CDATA[Non classé]]></category>
		<guid isPermaLink="false">https://laurentmillotte.fr/?p=700</guid>

					<description><![CDATA[Votre premier serveur web avec Node.js et Express Article 4/4 — Parcours débutant : du navigateur au serveur Nous avons posé les bases du langage, puis découvert Node.js et son catalogue de briques réutilisables. Il est temps de tout assembler pour construire ce qui se cache derrière n&#8217;importe quel site : un serveur web. Que [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">Votre premier serveur web avec Node.js et Express</h1>



<p class="wp-block-paragraph"><em>Article 4/4 — Parcours débutant : du navigateur au serveur</em></p>



<p class="wp-block-paragraph">Nous avons posé les bases du langage, puis découvert Node.js et son catalogue de briques réutilisables. Il est temps de tout assembler pour construire ce qui se cache derrière n&rsquo;importe quel site : un <strong>serveur web</strong>.</p>



<h2 class="wp-block-heading">Que fait un serveur, au juste ?</h2>



<p class="wp-block-paragraph">Un serveur web passe sa journée à attendre des questions et à y répondre. Lorsque vous saisissez une adresse dans votre navigateur, celui-ci envoie une requête via le protocole HTTP (<em>HyperText Transfer Protocol</em>, le protocole de transfert hypertexte) — le langage commun grâce auquel navigateurs et serveurs se comprennent. Le serveur reçoit la requête, détermine quoi renvoyer, et expédie une réponse.</p>



<p class="wp-block-paragraph">Notre objectif : écrire le programme qui tient ce rôle.</p>



<h2 class="wp-block-heading">Express, pour se simplifier la vie</h2>



<p class="wp-block-paragraph">Node.js sait gérer le réseau tout seul, mais le faire « à la main » est verbeux. La communauté s&rsquo;appuie donc sur <strong>Express</strong>, une brique installable via npm qui simplifie énormément la création d&rsquo;un serveur. On l&rsquo;ajoute au projet ainsi :</p>



<pre class="wp-block-code"><code>npm install express</code></pre>



<h2 class="wp-block-heading">Un serveur en quelques lignes</h2>



<p class="wp-block-paragraph">Voici un serveur complet et fonctionnel. Prenez le temps de le lire ligne à ligne plutôt que de le copier mécaniquement : c&rsquo;est en comprenant chaque morceau qu&rsquo;il devient le vôtre.</p>



<pre class="wp-block-code"><code>const express = require("express");
const app = express();

app.get("/", (req, res) =&gt; {
  res.send("Bonjour le monde !");
});

app.listen(3000, () =&gt; {
  console.log("Serveur démarré sur http://localhost:3000");
});</code></pre>



<p class="wp-block-paragraph">Décortiquons. La première ligne importe la brique Express installée précédemment. La deuxième crée notre application.</p>



<p class="wp-block-paragraph">Le cœur de l&rsquo;affaire est <code>app.get</code>. Il définit une <strong>route</strong> : « lorsqu&rsquo;un visiteur demande l&rsquo;adresse <code>/</code>, voici la réponse à lui renvoyer ». La fonction reçoit deux objets par convention : <code>req</code> (la <em>requête</em>, ce que demande le visiteur) et <code>res</code> (la <em>réponse</em>, ce qu&rsquo;on lui renvoie). Ici, on répond simplement par un texte.</p>



<p class="wp-block-paragraph">Enfin, <code>app.listen(3000, ...)</code> met le serveur à l&rsquo;écoute sur le port 3000. C&rsquo;est l&rsquo;équivalent d&rsquo;ouvrir la boutique et d&rsquo;allumer l&rsquo;enseigne : à partir de cet instant, le serveur attend les visiteurs.</p>



<p class="wp-block-paragraph">Lancez le tout avec <code>node</code> puis ouvrez <code>http://localhost:3000</code> dans votre navigateur : votre message s&rsquo;affiche. Vous venez de servir une page depuis un programme que vous avez écrit de bout en bout.</p>



<h2 class="wp-block-heading">La suite logique</h2>



<p class="wp-block-paragraph">À partir de cette base, tout devient une variation. Ajouter une route <code>/contact</code>, renvoyer non plus du texte mais des données structurées pour alimenter une API (<em>Application Programming Interface</em>, interface de programmation applicative), brancher une base de données : chaque besoin réel correspond à une brique que vous saurez désormais chercher et intégrer.</p>



<p class="wp-block-paragraph">Et c&rsquo;est là le vrai message de cette série : on n&rsquo;apprend pas le développement web en accumulant de la théorie, mais en faisant tourner de petits projets, puis en les complexifiant. Vous avez maintenant fait le chemin du bouton qui s&rsquo;anime jusqu&rsquo;au serveur qui répond. La meilleure étape suivante n&rsquo;est pas un nouveau cours — c&rsquo;est votre prochain projet.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Découvrir Node.js</title>
		<link>https://laurentmillotte.fr/decouvrir-node-js/</link>
		
		<dc:creator><![CDATA[Laurent Millotte]]></dc:creator>
		<pubDate>Thu, 28 May 2026 13:16:26 +0000</pubDate>
				<category><![CDATA[Non classé]]></category>
		<guid isPermaLink="false">https://laurentmillotte.fr/?p=698</guid>

					<description><![CDATA[JavaScript sort du navigateur : découvrir Node.js Article 3/4 — Parcours débutant : du navigateur au serveur Jusqu&#8217;ici, JavaScript vivait dans le navigateur. Mais nous avons évoqué dans le premier article sa capacité à tourner ailleurs. C&#8217;est exactement ce que permet Node.js : exécuter du JavaScript directement sur votre ordinateur ou sur un serveur, sans [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">JavaScript sort du navigateur : découvrir Node.js</h1>



<p class="wp-block-paragraph"><em>Article 3/4 — Parcours débutant : du navigateur au serveur</em></p>



<p class="wp-block-paragraph">Jusqu&rsquo;ici, JavaScript vivait dans le navigateur. Mais nous avons évoqué dans le premier article sa capacité à tourner ailleurs. C&rsquo;est exactement ce que permet <strong>Node.js</strong> : exécuter du JavaScript directement sur votre ordinateur ou sur un serveur, sans navigateur.</p>



<h2 class="wp-block-heading">Pourquoi est-ce une si bonne nouvelle ?</h2>



<p class="wp-block-paragraph">Concrètement, un site web a deux faces. Le <em>front-end</em> est tout ce qui s&rsquo;affiche dans le navigateur de l&rsquo;utilisateur. Le <em>back-end</em> est la partie cachée : la base de données, la logique métier, l&rsquo;envoi des e-mails. Traditionnellement, ces deux faces réclamaient deux langages différents.</p>



<p class="wp-block-paragraph">Avec Node.js, on écrit les deux en JavaScript. Vous apprenez un langage, et vous couvrez l&rsquo;ensemble de la chaîne. C&rsquo;est ce qu&rsquo;on appelle le développement <em>fullstack</em>, et c&rsquo;est l&rsquo;une des grandes raisons de la popularité de Node.</p>



<h2 class="wp-block-heading">Sous le capot</h2>



<p class="wp-block-paragraph">Node.js repose sur le moteur V8, la même mécanique qui exécute JavaScript dans le navigateur Chrome. Les ingénieurs ont en quelque sorte extrait ce moteur du navigateur pour le faire fonctionner de façon autonome. Ajoutez-y des outils pour lire des fichiers, écouter le réseau ou parler à une base de données, et vous obtenez une plateforme complète pour bâtir des applications côté serveur.</p>



<h2 class="wp-block-heading">Votre premier script</h2>



<p class="wp-block-paragraph">Une fois Node.js installé, créez un fichier <code>bonjour.js</code> contenant une seule ligne :</p>



<pre class="wp-block-code"><code>console.log("Bonjour depuis Node.js !");</code></pre>



<p class="wp-block-paragraph">Puis, dans un terminal, lancez-le :</p>



<pre class="wp-block-code"><code>node bonjour.js</code></pre>



<p class="wp-block-paragraph">Le message s&rsquo;affiche dans le terminal, et non dans une page web. Vous venez d&rsquo;exécuter du JavaScript hors du navigateur : un cap symbolique.</p>



<h2 class="wp-block-heading">npm, la bibliothèque géante</h2>



<p class="wp-block-paragraph">Le second atout de Node tient en trois lettres : <strong>npm</strong> (<em>Node Package Manager</em>, le gestionnaire de paquets de Node). C&rsquo;est un immense catalogue de code déjà écrit par d&rsquo;autres développeurs, que vous pouvez ajouter à vos projets en une commande.</p>



<p class="wp-block-paragraph">Besoin de gérer des dates, de générer un mot de passe, de créer un serveur web ? Quelqu&rsquo;un a probablement déjà résolu le problème et publié sa solution. Plutôt que de tout réinventer, vous assemblez des briques éprouvées — un réflexe professionnel essentiel.</p>



<p class="wp-block-paragraph">Un projet Node démarre généralement ainsi :</p>



<pre class="wp-block-code"><code>npm init -y</code></pre>



<p class="wp-block-paragraph">Cette commande crée un fichier <code>package.json</code>, sorte de carte d&rsquo;identité du projet : son nom, sa version, et la liste des briques externes qu&rsquo;il utilise.</p>



<p class="wp-block-paragraph">Vous avez désormais les deux ingrédients clés : un JavaScript qui tourne côté serveur, et un moyen d&rsquo;y greffer du code existant. Dans le dernier article, nous les combinerons pour fabriquer quelque chose de concret : un véritable serveur web.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Les briques de base Javascript</title>
		<link>https://laurentmillotte.fr/les-briques-de-base-variables-types-et-fonctions/</link>
		
		<dc:creator><![CDATA[Laurent Millotte]]></dc:creator>
		<pubDate>Tue, 12 May 2026 09:24:57 +0000</pubDate>
				<category><![CDATA[Non classé]]></category>
		<guid isPermaLink="false">https://laurentmillotte.fr/?p=696</guid>

					<description><![CDATA[Les briques de base : variables, types et fonctions Article 2/4 — Parcours débutant : du navigateur au serveur Dans le premier article, nous avons situé JavaScript comme le langage du comportement d&#8217;une page web. Place maintenant aux deux outils que vous utiliserez dans absolument tous vos programmes : les variables et les fonctions. Ranger [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">Les briques de base : variables, types et fonctions</h1>



<p class="wp-block-paragraph"><em>Article 2/4 — Parcours débutant : du navigateur au serveur</em></p>



<p class="wp-block-paragraph">Dans le premier article, nous avons situé JavaScript comme le langage du comportement d&rsquo;une page web. Place maintenant aux deux outils que vous utiliserez dans absolument tous vos programmes : les <strong>variables</strong> et les <strong>fonctions</strong>.</p>



<h2 class="wp-block-heading">Ranger une information : la variable</h2>



<p class="wp-block-paragraph">Une variable est une étiquette posée sur une information pour pouvoir la retrouver plus tard. On en déclare une avec le mot-clé <code>const</code> ou <code>let</code> :</p>



<pre class="wp-block-code"><code>const prenom = "Laurent";
let age = 30;</code></pre>



<p class="wp-block-paragraph">La différence tient en une règle de bon sens. On utilise <code>const</code> (pour <em>constante</em>) quand l&rsquo;information ne changera pas, et <code>let</code> quand elle est appelée à évoluer. Le réflexe sain consiste à choisir <code>const</code> par défaut, et à ne passer à <code>let</code> que si l&rsquo;on a une raison de modifier la valeur. Cela rend le code plus lisible : un lecteur sait, d&rsquo;un coup d&rsquo;œil, ce qui bouge et ce qui est figé.</p>



<h2 class="wp-block-heading">Quelques types de données</h2>



<p class="wp-block-paragraph">Une variable peut contenir différentes natures d&rsquo;information. Les plus courantes au départ sont le texte (la <em>chaîne de caractères</em>, entre guillemets), les nombres, et les booléens — c&rsquo;est-à-dire les valeurs <code>true</code> (vrai) ou <code>false</code> (faux), pratiques pour répondre à une question par oui ou non.</p>



<pre class="wp-block-code"><code>const nom = "Dupont";    // texte
const score = 42;         // nombre
const estConnecte = true; // booléen</code></pre>



<h2 class="wp-block-heading">Écrire une action réutilisable : la fonction</h2>



<p class="wp-block-paragraph">Une fonction est un bloc d&rsquo;instructions auquel on donne un nom, pour pouvoir le rejouer à volonté sans le réécrire. Pensez-y comme à une recette : on la définit une fois, puis on l&rsquo;exécute autant de fois qu&rsquo;on le souhaite, éventuellement avec des ingrédients différents.</p>



<pre class="wp-block-code"><code>function saluer(nom) {
  return "Bonjour " + nom;
}

saluer("Laurent"); // renvoie "Bonjour Laurent"
saluer("Marie");   // renvoie "Bonjour Marie"</code></pre>



<p class="wp-block-paragraph">Le mot <code>nom</code> entre parenthèses est un <em>paramètre</em> : une information que l&rsquo;on fournit à la fonction au moment de l&rsquo;appeler. Le mot <code>return</code> indique le résultat que la fonction renvoie.</p>



<p class="wp-block-paragraph">JavaScript moderne propose une écriture plus compacte, la <em>fonction fléchée</em>, que vous rencontrerez partout :</p>



<pre class="wp-block-code"><code>const saluer = (nom) =&gt; "Bonjour " + nom;</code></pre>



<p class="wp-block-paragraph">C&rsquo;est exactement la même recette, présentée plus brièvement. Inutile de chercher à mémoriser cette syntaxe par cœur dès aujourd&rsquo;hui : elle deviendra naturelle à force de l&rsquo;écrire.</p>



<p class="wp-block-paragraph">Avec ces deux notions — stocker une information, exécuter une action — vous tenez déjà l&rsquo;ossature de la quasi-totalité des programmes. Dans le prochain article, nous ferons sortir JavaScript du navigateur pour découvrir Node.js.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Qu&#8217;est-ce que JavaScript ?</title>
		<link>https://laurentmillotte.fr/quest-ce-que-javascript-et-pourquoi-lapprendre/</link>
		
		<dc:creator><![CDATA[Laurent Millotte]]></dc:creator>
		<pubDate>Mon, 27 Apr 2026 15:34:30 +0000</pubDate>
				<category><![CDATA[Non classé]]></category>
		<guid isPermaLink="false">https://laurentmillotte.fr/?p=694</guid>

					<description><![CDATA[Qu&#8217;est-ce que JavaScript, et pourquoi l&#8217;apprendre ? Article 1/4 — Parcours débutant : du navigateur au serveur Si vous avez déjà cliqué sur un bouton qui déroule un menu, vu un formulaire signaler une erreur sans recharger la page, ou fait glisser une carte sous votre souris, vous avez croisé JavaScript. C&#8217;est le langage qui [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">Qu&rsquo;est-ce que JavaScript, et pourquoi l&rsquo;apprendre ?</h1>



<p class="wp-block-paragraph"><em>Article 1/4 — Parcours débutant : du navigateur au serveur</em></p>



<p class="wp-block-paragraph">Si vous avez déjà cliqué sur un bouton qui déroule un menu, vu un formulaire signaler une erreur sans recharger la page, ou fait glisser une carte sous votre souris, vous avez croisé JavaScript. C&rsquo;est le langage qui rend les pages web vivantes.</p>



<h2 class="wp-block-heading">Trois piliers, trois rôles</h2>



<p class="wp-block-paragraph">Pour situer JavaScript, il faut le replacer auprès de ses deux compagnons. Une page web repose sur trois technologies aux rôles bien distincts.</p>



<p class="wp-block-paragraph">Le HTML (<em>HyperText Markup Language</em>, langage de balisage hypertexte) fournit la <strong>structure</strong> : les titres, les paragraphes, les images, les liens. C&rsquo;est le squelette de la page.</p>



<p class="wp-block-paragraph">Le CSS (<em>Cascading Style Sheets</em>, feuilles de style en cascade) gère l&rsquo;<strong>apparence</strong> : couleurs, polices, espacements, disposition. C&rsquo;est le vêtement posé sur le squelette.</p>



<p class="wp-block-paragraph">JavaScript, lui, apporte le <strong>comportement</strong> : ce qui réagit, calcule, change, communique avec un serveur. C&rsquo;est, si l&rsquo;on file la métaphore, le système nerveux. Sans lui, une page reste un document que l&rsquo;on lit ; avec lui, elle devient une application avec laquelle on dialogue.</p>



<h2 class="wp-block-heading">Un langage qui a débordé de son cadre</h2>



<p class="wp-block-paragraph">JavaScript est né en 1995 pour animer les pages dans le navigateur, et rien d&rsquo;autre. C&rsquo;était sa seule maison. Mais le langage a tellement gagné en maturité qu&rsquo;il s&rsquo;est mis à tourner ailleurs : sur les serveurs, dans les applications mobiles, jusque dans les objets connectés.</p>



<p class="wp-block-paragraph">Cette expansion explique pourquoi JavaScript est aujourd&rsquo;hui l&rsquo;une des compétences les plus recherchées : un seul langage permet de travailler à la fois sur ce que voit l&rsquo;utilisateur (le <em>front-end</em>) et sur la machinerie cachée derrière (le <em>back-end</em>). Nous y reviendrons dans les articles suivants.</p>



<h2 class="wp-block-heading">Faut-il être informaticien pour s&rsquo;y mettre ?</h2>



<p class="wp-block-paragraph">Non. JavaScript a la rare qualité de produire un résultat visible presque immédiatement : quelques lignes suffisent pour qu&rsquo;un bouton réagisse. Cette gratification rapide en fait un excellent premier langage, à condition d&rsquo;accepter une règle simple : on progresse en construisant de petites choses qui fonctionnent, pas en cherchant à tout mémoriser d&rsquo;avance.</p>



<p class="wp-block-paragraph">C&rsquo;est précisément l&rsquo;esprit de cette série. Dans le prochain article, nous poserons les briques de base du langage : comment stocker une information, et comment écrire une instruction réutilisable.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Pair-programming avec IA</title>
		<link>https://laurentmillotte.fr/pair-programming-avec-ia/</link>
		
		<dc:creator><![CDATA[Laurent Millotte]]></dc:creator>
		<pubDate>Fri, 17 Apr 2026 11:51:00 +0000</pubDate>
				<category><![CDATA[Non classé]]></category>
		<guid isPermaLink="false">https://laurentmillotte.fr/?p=706</guid>

					<description><![CDATA[Le pair programming avec une IA : guide pratique Le pair programming (programmation en binôme) est une vieille pratique : deux développeurs, un clavier, un dialogue permanent qui muscle la qualité du code. L&#8217;arrivée des assistants IA (Claude, ChatGPT, Copilot) en propose une variante asynchrone et toujours disponible. Encore faut-il s&#8217;en servir comme d&#8217;un coéquipier, [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">Le pair programming avec une IA : guide pratique</h1>



<p class="wp-block-paragraph">Le <em>pair programming</em> (programmation en binôme) est une vieille pratique : deux développeurs, un clavier, un dialogue permanent qui muscle la qualité du code. L&rsquo;arrivée des assistants IA (Claude, ChatGPT, Copilot) en propose une variante asynchrone et toujours disponible. Encore faut-il s&rsquo;en servir comme d&rsquo;un coéquipier, pas comme d&rsquo;un distributeur de solutions.</p>



<h2 class="wp-block-heading">Choisir son rôle dans le binôme</h2>



<p class="wp-block-paragraph">La règle d&rsquo;or tient en une question : qui tient le clavier ?</p>



<p class="wp-block-paragraph">Quand vous tenez le clavier, l&rsquo;IA joue le rôle du <em>navigator</em> — elle commente, propose, alerte, mais c&rsquo;est vous qui écrivez. Vous restez le pilote, vous gardez la mécanique en main. C&rsquo;est la configuration la plus formatrice.</p>



<p class="wp-block-paragraph">Quand l&rsquo;IA tient le clavier — c&rsquo;est-à-dire quand vous copiez son code tel quel — vous devenez navigateur. C&rsquo;est utile pour les tâches répétitives ou un terrain que vous maîtrisez déjà, dangereux sur un sujet que vous découvrez. Coller un bloc de 80 lignes que vous ne pourriez pas réécrire seul, c&rsquo;est creuser une dette de compréhension qui vous tombera dessus au premier bug.</p>



<p class="wp-block-paragraph">Alternez les deux rôles consciemment, en sachant lequel vous jouez à chaque instant.</p>



<h2 class="wp-block-heading">Bien formuler ses demandes</h2>



<p class="wp-block-paragraph">Une IA n&rsquo;a pas accès à votre contexte : ni votre projet, ni vos conventions, ni l&rsquo;erreur exacte que vous avez en tête. Quatre éléments font passer une demande médiocre à une demande utile :</p>



<ul class="wp-block-list">
<li><strong>Le contexte</strong> : « projet Node.js / Express, base PostgreSQL », pas « j&rsquo;ai un site ».</li>



<li><strong>L&rsquo;intention</strong> : ce que vous cherchez à faire, et pourquoi.</li>



<li><strong>Ce que vous avez déjà tenté</strong> : ça évite les suggestions que vous avez déjà éliminées.</li>



<li><strong>Le format attendu</strong> : explication courte, code commenté, comparaison de deux approches.</li>
</ul>



<p class="wp-block-paragraph">Plus la question est précise, plus la réponse est exploitable. Une question floue produit une réponse générique — exactement comme avec un collègue humain.</p>



<h2 class="wp-block-heading">Les bons usages</h2>



<p class="wp-block-paragraph">Certains usages tirent vraiment parti de l&rsquo;IA. <strong>Débloquer une situation</strong> : vous tournez en rond sur un message d&rsquo;erreur, l&rsquo;IA propose trois pistes, l&rsquo;une d&rsquo;elles relance la machine. <strong>Explorer une API inconnue</strong> : plutôt que d&rsquo;éplucher la documentation seul, vous demandez un exemple minimal et vous lisez le code obtenu. <strong>Relire son propre code</strong> : « voici ma fonction, qu&rsquo;est-ce qui peut mal tourner ? » donne souvent des retours pertinents. <strong>Traduire une intention en code de départ</strong> : utile pour amorcer, à condition de retravailler ce qui sort.</p>



<h2 class="wp-block-heading">Les pièges à éviter</h2>



<p class="wp-block-paragraph">Le premier piège est la <strong>confiance aveugle</strong>. Une IA produit du code plausible, pas nécessairement correct. Elle peut inventer une fonction qui n&rsquo;existe pas, utiliser une syntaxe obsolète, ou résoudre un problème voisin du vôtre sans le dire. Testez tout ce qu&rsquo;elle propose.</p>



<p class="wp-block-paragraph">Le second est la <strong>dilution de la compréhension</strong>. Si à la fin d&rsquo;une session vous avez un code qui fonctionne mais que vous ne sauriez pas expliquer ligne à ligne, vous avez livré du code et perdu l&rsquo;apprentissage. Sur un sujet que vous voulez maîtriser, imposez-vous de tout retaper à la main.</p>



<p class="wp-block-paragraph">Le troisième est la <strong>perte d&rsquo;initiative</strong>. Réflexe à entretenir : essayer de résoudre seul pendant 15 minutes avant d&rsquo;appeler le binôme. Sinon, on perd l&rsquo;habitude de penser, et c&rsquo;est précisément ce que les années pratiquent.</p>



<h2 class="wp-block-heading">Un coéquipier, pas un oracle</h2>



<p class="wp-block-paragraph">La meilleure manière de se positionner : traiter l&rsquo;IA comme un collègue compétent mais qui ne connaît pas votre projet. Vous ne lui livreriez pas votre code en aveugle, vous ne croiriez pas chacune de ses affirmations sans vérification, vous ne lui délègueriez pas vos décisions d&rsquo;architecture. La même prudence professionnelle s&rsquo;applique. À cette condition, c&rsquo;est un binôme remarquable.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Bonnes pratiques HTML/CSS dans un projet JS fullstack</title>
		<link>https://laurentmillotte.fr/bonnes-pratiques-html-css-dans-un-projet-js-fullstack/</link>
		
		<dc:creator><![CDATA[Laurent Millotte]]></dc:creator>
		<pubDate>Fri, 20 Mar 2026 15:52:00 +0000</pubDate>
				<category><![CDATA[Non classé]]></category>
		<guid isPermaLink="false">https://laurentmillotte.fr/?p=708</guid>

					<description><![CDATA[Bonnes pratiques HTML/CSS dans un projet JS fullstack Dans un projet JavaScript fullstack — typiquement React, Vue ou Next.js côté front, Node.js côté back — il est tentant de considérer HTML et CSS comme des détails que le framework gérera. C&#8217;est précisément l&#8217;erreur qui produit des interfaces lourdes, inaccessibles et pénibles à maintenir. Le framework [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">Bonnes pratiques HTML/CSS dans un projet JS fullstack</h1>



<p class="wp-block-paragraph">Dans un projet JavaScript fullstack — typiquement React, Vue ou Next.js côté front, Node.js côté back — il est tentant de considérer HTML et CSS comme des détails que le framework gérera. C&rsquo;est précisément l&rsquo;erreur qui produit des interfaces lourdes, inaccessibles et pénibles à maintenir. Le framework rend le HTML, mais c&rsquo;est vous qui décidez de sa qualité.</p>



<h2 class="wp-block-heading">HTML : redonner du sens aux balises</h2>



<p class="wp-block-paragraph">Le réflexe <code>&lt;div&gt;</code> partout est le marqueur d&rsquo;un projet front en dérive. HTML5 propose un vocabulaire riche : <code>&lt;header&gt;</code>, <code>&lt;nav&gt;</code>, <code>&lt;main&gt;</code>, <code>&lt;article&gt;</code>, <code>&lt;section&gt;</code>, <code>&lt;aside&gt;</code>, <code>&lt;footer&gt;</code>, <code>&lt;button&gt;</code>, <code>&lt;figure&gt;</code>. Chacune porte un sens que les navigateurs, les moteurs de recherche et les lecteurs d&rsquo;écran exploitent.</p>



<p class="wp-block-paragraph">La règle pratique : avant de poser une <code>&lt;div&gt;</code>, demandez-vous si une balise plus précise existe. Une zone cliquable qui déclenche une action est un <code>&lt;button&gt;</code>, pas une <code>&lt;div&gt;</code> avec un <code>onClick</code>. Un lien qui mène ailleurs est un <code>&lt;a&gt;</code>, pas un <code>&lt;span&gt;</code> stylé. Ce n&rsquo;est pas du purisme : un <code>&lt;button&gt;</code> est focusable au clavier, déclenchable avec Entrée, annoncé comme bouton par les outils d&rsquo;accessibilité. Vous n&rsquo;avez rien à coder pour ça — à condition d&rsquo;avoir choisi la bonne balise.</p>



<p class="wp-block-paragraph">L&rsquo;accessibilité, justement, n&rsquo;est pas une couche qu&rsquo;on ajoute à la fin. Quelques réflexes suffisent à 80 % du travail : un attribut <code>alt</code> sur chaque <code>&lt;img&gt;</code> significative, des <code>&lt;label&gt;</code> reliés à leurs champs de formulaire, une hiérarchie de titres <code>&lt;h1&gt;</code> à <code>&lt;h6&gt;</code> cohérente, un contraste suffisant entre texte et fond. Le reste s&rsquo;apprend au fil des projets.</p>



<h2 class="wp-block-heading">CSS : maîtriser le poids et l&rsquo;éparpillement</h2>



<p class="wp-block-paragraph">Le problème classique d&rsquo;un projet fullstack JS n&rsquo;est pas l&rsquo;écriture du CSS — c&rsquo;est sa <strong>prolifération</strong>. Chaque composant tend à embarquer ses propres styles, et au bout de quelques mois, personne ne sait plus ce qui sert encore.</p>



<p class="wp-block-paragraph">Trois principes limitent les dégâts.</p>



<p class="wp-block-paragraph"><strong>Choisir une stratégie de scoping, et s&rsquo;y tenir.</strong> <em>Scoping</em> signifie limiter la portée d&rsquo;une règle CSS pour qu&rsquo;elle n&rsquo;affecte que son composant. Les options courantes sont les <em>CSS Modules</em> (un fichier <code>.module.css</code> par composant, classes localisées automatiquement), les <em>styled-components</em> ou équivalents (CSS écrit dans le JavaScript), et les frameworks utilitaires comme Tailwind (classes prédéfinies appliquées directement dans le HTML). Aucune n&rsquo;est universellement meilleure ; la mauvaise décision est de les mélanger sans raison sur un même projet.</p>



<p class="wp-block-paragraph"><strong>Séparer les variables des règles.</strong> Couleurs, espacements, tailles de police, rayons de bordure : tout ce qui se répète doit vivre dans des <em>custom properties</em> CSS (<code>--couleur-primaire</code>, <code>--espace-md</code>). Cela coûte une heure au démarrage et économise des semaines lors d&rsquo;un changement de charte graphique. C&rsquo;est aussi la base d&rsquo;un mode sombre propre.</p>



<p class="wp-block-paragraph"><strong>Penser mobile d&rsquo;abord.</strong> Écrivez d&rsquo;abord les styles pour le petit écran, puis ajoutez les ajustements pour les plus grands via des <em>media queries</em>. L&rsquo;inverse — concevoir pour le bureau puis « adapter » — produit presque toujours une expérience mobile médiocre.</p>



<h2 class="wp-block-heading">Les ponts entre back et front</h2>



<p class="wp-block-paragraph">Dans un projet fullstack, vous générez parfois du HTML côté serveur (rendu Express avec un moteur de templates, ou <em>Server-Side Rendering</em> avec Next.js) et parfois côté client. Deux pièges à garder en tête.</p>



<p class="wp-block-paragraph">D&rsquo;abord, <strong>ne jamais injecter du contenu utilisateur dans du HTML sans l&rsquo;échapper</strong>. Une chaîne <code>&lt;script&gt;alert('xss')&lt;/script&gt;</code> venue d&rsquo;un formulaire et collée brute dans une page ouvre une faille XSS (<em>Cross-Site Scripting</em>, injection de scripts entre sites). Les moteurs de templates sérieux échappent par défaut ; encore faut-il ne pas désactiver cette protection sans raison forte.</p>



<p class="wp-block-paragraph">Ensuite, <strong>rendre côté serveur ce qui doit être visible immédiatement et indexable</strong>. Un titre, une description, le contenu principal d&rsquo;un article doivent apparaître dans le HTML initial — pas être ajoutés par JavaScript après le chargement. C&rsquo;est essentiel pour le référencement et pour les utilisateurs aux connexions lentes.</p>



<h2 class="wp-block-heading">Le test qui ne ment pas</h2>



<p class="wp-block-paragraph">Une bonne pratique se vérifie facilement : désactivez CSS dans votre navigateur, naviguez sur votre site. Si la structure reste lisible — titres clairs, ordre logique, formulaires utilisables — votre HTML fait son travail. Désactivez maintenant JavaScript. Si la page d&rsquo;accueil et les contenus principaux restent accessibles, votre fullstack est bien architecturé.</p>



<p class="wp-block-paragraph">Ces deux tests prennent trente secondes. Ils en disent plus long sur la santé d&rsquo;un projet que beaucoup d&rsquo;outils sophistiqués.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
