ans framework, JavaScript pur, version qui ouvre le cerveau
Dans la vie dâun dĂ©veloppeur, certaines vĂ©ritĂ©s sont inĂ©vitables :
console.logest partout- Un jour, tu te disputeras avec
undefined - EtâŠ
đ Tu feras au moins une fois une Todo List
Mais cet article nâest pas :
â une Todo âcopierâcollerâ
â une fuite derriĂšre un framework
â
un guide qui tâapprend vraiment comment JavaScript rĂ©flĂ©chit
đ§ 1. Todo List = Petite application, grande leçon
Une Todo List paraĂźt simple, mais elle cache :
- La récupération de données utilisateur
- Le stockage des données en mémoire (state)
- La mise Ă jour de lâĂ©cran (render)
- La gestion des événements (events)
En rĂ©alitĂ©, une Todo List, câest :
« Voir le cĆur de JavaScript Ă travers une petite application. »
đ§© 2. Dâabord la logique : comment fonctionne une Todo List ?
Avant dâĂ©crire du code, rĂ©flĂ©chissons đ§
Une Todo List fait ceci :
1ïžâŁ Lâutilisateur Ă©crit une tĂąche
2ïžâŁ Il clique sur « Add »
3ïžâŁ La tĂąche entre dans la liste
4ïžâŁ Il peut la marquer comme terminĂ©e
5ïžâŁ Il peut la supprimer
CÎté JavaScript, il y a cette boucle :
UTILISATEUR â ĂVĂNEMENT â STATE â RENDER â ĂCRAN
Si tu comprends ça, tu es déjà à mi-chemin.
𧱠3. HTML : installer le décor (ni trop, ni trop peu)
Le HTML nâest que le squelette.
Les dĂ©veloppeurs malins laissent le vrai travail Ă JavaScript đ
<input type="text" id="todoInput" placeholder="Write a task..." />
<button id="addBtn">Add</button>
<ul id="todoList"></ul>
đ§ Quâest-ce quâon a ici ?
inputâ lâendroit oĂč lâon Ă©crit la tĂąchebuttonâ le bouton qui dĂ©clenche lâactionulâ la vitrine oĂč les tĂąches sâaffichent
Quand le HTML est simple :
- JavaScript respire
- Le code est lisible
- Le debug est plus facile
đŠ 4. Le concept de State : oĂč stocker les todos ?
Câest le point le plus critique đ„
On ne stocke pas les todos dans le DOM,
on les stocke dans la mémoire de JavaScript.
const todos = [];
â Pourquoi un tableau (array) ?
- Ordonné
- Dynamique
- Facile à gérer
â Pourquoi const ?
- Le tableau garde la mĂȘme rĂ©fĂ©rence
- Impossible dâĂ©crire par erreur
todos = null - Code plus sûr
đ RĂšgle dâor :
Le DOM est temporaire, le state est permanent.
đŁ 5. RĂ©cupĂ©rer les Ă©lĂ©ments du DOM (les yeux et les oreilles de JS)
On dit Ă JavaScript :
« Voilà les éléments avec lesquels on va parler. »
const input = document.getElementById("todoInput");
const button = document.getElementById("addBtn");
const list = document.getElementById("todoList");
Maintenant :
input.valueâ ce que lâutilisateur a Ă©critlistâ la maison des tĂąches
â 6. Ajouter une Todo : lĂ oĂč lâaction commence
Place Ă lâaction đŹ
button.addEventListener("click", () => {
const todoText = input.value.trim();
if (todoText === "") return;
todos.push({
text: todoText,
completed: false
});
input.value = "";
renderTodos();
});
đ§ Explication amusante, ligne par ligne :
addEventListener("click")
⥠Lâutilisateur clique
⥠JS : « Reçu ! »
input.value.trim()
⥠Supprime les espaces au début et à la fin
⥠Pas de todo vide
if (todoText === "") return;
⥠Tùche vide = poubelle
⥠UX sauvĂ© đ
todos.push({ ... })
⥠On stocke des objets, pas de simples strings
⥠Structure prĂȘte pour lâavenir
renderTodos()
⥠Ordre donnĂ© : « Mets Ă jour lâĂ©cran ! »
đ 7. La logique de rendu : tout redessiner (partie la plus importante)
La plus grosse erreur dans les Todo Lists :
« Tripoter le DOM élément par élément »
Nous, on ne fait pas ça đ
On redessine tout.
function renderTodos() {
list.innerHTML = "";
todos.forEach((todo, index) => {
const li = document.createElement("li");
li.textContent = todo.text;
if (todo.completed) {
li.style.textDecoration = "line-through";
}
li.addEventListener("click", () => {
toggleTodo(index);
});
const deleteBtn = document.createElement("button");
deleteBtn.textContent = "â";
deleteBtn.addEventListener("click", (e) => {
e.stopPropagation();
deleteTodo(index);
});
li.appendChild(deleteBtn);
list.appendChild(li);
});
}
đ§ Que se passe-t-il ici ?
innerHTML = ""â on nettoie lâĂ©cranforEachâ on redessine chaque todoindexâ on sait exactement laquelle on manipule- Click â complĂ©ter ou supprimer
đ Cette logique est lâancĂȘtre de :
- React
- Vue
- Angular
â 8. Supprimer une Todo (simple et propre)
function deleteTodo(index) {
todos.splice(index, 1);
renderTodos();
}
đ§ Que fait splice ?
- Commence Ă
index - Supprime 1 élément
- Met Ă jour le tableau
Ensuite :
⥠re-render
⥠écran à jour
â 9. ComplĂ©ter une Todo (UX qui monte dâun niveau)
function toggleTodo(index) {
todos[index].completed = !todos[index].completed;
renderTodos();
}
đ§ Logique trĂšs simple :
trueâfalsefalseâtrue
Mais gros effet :
- Retour visuel immédiat
- Utilisateur content
- Application « vivante »
đĄ 10. Conseils pro (or pur)
â Ne stocke jamais le state dans le DOM
â Fais du render le centre de tout
â Ăcris des fonctions courtes
â « Si quelque chose change â render »
â Apprends JavaScript avant les frameworks
đ§ 11. Quâas-tu vraiment appris avec ce projet ?
Cette Todo List tâa appris :
- La manipulation du DOM
- La gestion des événements
- La gestion du state
- Lâutilisation des tableaux et objets
- La synchronisation UI â donnĂ©es
Avec ça :
- React devient plus facile
- Ton niveau de debug augmente
- Tu abandonnes les rĂ©flexes âjuniorâ
đ Mot de la fin
CrĂ©er une Todo List sans framework, câest :
- pas difficile
- extrĂȘmement formateur
- vraiment valorisant
Et ça te fait dire :
« Je comprends vraiment JavaScript. »

