{"id":32655,"date":"2025-05-13T23:33:18","date_gmt":"2025-05-14T02:33:18","guid":{"rendered":"https:\/\/mastertrend.info\/?p=32655"},"modified":"2026-04-28T14:50:55","modified_gmt":"2026-04-28T17:50:55","slug":"creez-votre-premiere-application-web","status":"publish","type":"post","link":"https:\/\/mastertrend.info\/fr\/crea-tu-primera-app-web\/","title":{"rendered":"Cr\u00e9ez votre premi\u00e8re application web et ma\u00eetrisez la programmation sans stress \ud83d\ude80\ud83d\udcbb"},"content":{"rendered":"<h2 class=\"table-content-link\">Cr\u00e9ez votre premi\u00e8re application web : notes + compteur facilement et rapidement \ud83d\udcdd\u26a1<\/h2>\n<p>Se lancer dans la programmation peut sembler d\u00e9courageant, avec autant de langages, de frameworks et de m\u00e9thodologies \u00e0 prendre en compte. Parfois, il peut sembler plus simple de tout d\u00e9l\u00e9guer \u00e0 une IA. Ne t&#039;inqui\u00e8te pas! La programmation pour le Web peut \u00eatre simple, amusante et, surtout, enti\u00e8rement gratuite\u00a0! \ud83c\udf10\u2728<\/p>\n<h2 id=\"what-you-rsquo-ll-build\">Ce que vous allez construire<\/h2>\n<p>En suivant ce tutoriel, vous cr\u00e9erez une application Web simple pour stocker des notes de texte et compter les caract\u00e8res et les mots.<\/p>\n<p>L&#039;application conservera les donn\u00e9es, elle se souviendra donc du texte lorsque vous rechargerez ou rouvrirez la page. Cela signifie que vous disposerez d&#039;un moyen pratique d&#039;enregistrer tout texte auquel vous souhaitez faire r\u00e9f\u00e9rence ult\u00e9rieurement, comme des adresses, des URL, etc. \ud83d\udcc4\ud83d\udd17<\/p>\n<figure><picture><source media=\"(min-width: 1024px)\" data-=\"\" \/><source media=\"(min-width: 768px)\" data-=\"\" \/><source media=\"(min-width: 481px)\" data-=\"\" \/><source media=\"(min-width: 0px)\" data-=\"\" \/><img decoding=\"async\" style=\"display: block; height: auto; max-width: 100%;\" src=\"https:\/\/mastertrend.info\/wp-content\/uploads\/2025\/01\/Crea-Tu-Primera-Aplicacion-Web-Una-App-de-Notas-Sencilla.png\" alt=\"Un exemple d\u2019application Web simple bas\u00e9e sur du texte qui affiche des notes, notamment une entr\u00e9e de calendrier et une liste d\u2019URL.\" width=\"960\" height=\"569\" title=\"\"> <\/picture><\/figure>\n<p>Il compte \u00e9galement les caract\u00e8res et les mots, ce qui constitue une bonne introduction \u00e0 la gestion des cha\u00eenes (texte). Bien s\u00fbr, l&#039;application est tr\u00e8s simple : c&#039;est le but ! Mais avec ce tutoriel, vous apprendrez les bases du d\u00e9veloppement d&#039;une application Web, et le monde sera alors \u00e0 vous. \ud83e\uddaa\ud83d\udcbb<\/p>\n<h2 id=\"how-you-rsquo-ll-build-it\">Comment allez-vous le construire ?<\/h2>\n<p>Bien que les applications Web soient tr\u00e8s diverses, elles impliquent g\u00e9n\u00e9ralement trois technologies principales : HTML, CSS et JavaScript. Il est essentiel que vous compreniez leurs r\u00f4les avant de commencer. \ud83d\udcda<\/p>\n<ul>\n<li>HTML : Hypertext Markup Language vous permet de d\u00e9finir la structure de votre contenu. Avec lui, vous pouvez marquer un texte en fonction de sa signification, en indiquant s&#039;il s&#039;agit d&#039;un paragraphe, d&#039;un titre ou d&#039;un \u00e9l\u00e9ment d&#039;une liste, par exemple.<\/li>\n<li>CSS\u00a0: les feuilles de style en cascade vous permettent de styliser votre contenu. En utilisant ce langage, vous pouvez colorer un paragraphe en vert, mettre tous vos liens en gras ou positionner une barre lat\u00e9rale \u00e0 c\u00f4t\u00e9 de votre article principal. \ud83c\udfa8<\/li>\n<li>JavaScript : Avec ce langage de programmation, vous pouvez ajouter des fonctionnalit\u00e9s \u00e0 votre site Web. Vous pouvez faire en sorte que des boutons affichent ou masquent des parties de votre document lorsque vous cliquez dessus, ou impl\u00e9menter un traitement de texte ou un jeu vid\u00e9o \u00e0 part enti\u00e8re. \ud83c\udfae<\/li>\n<\/ul>\n<p>Il <a href=\"https:\/\/web.dev\" target=\"_blank\" rel=\"noopener noreferrer\">site web.dev<\/a> (escrito por miembros del equipo de Chrome) y MDN, la Red de Desarrolladores de Mozilla, son dos excelentes fuentes de informaci\u00f3n sobre tecnolog\u00edas web fundamentales.<\/p>\n<figure><picture><source media=\"(min-width: 1024px)\" data-=\"\" \/><source media=\"(min-width: 768px)\" data-=\"\" \/><source media=\"(min-width: 481px)\" data-=\"\" \/><source media=\"(min-width: 0px)\" data-=\"\" \/><img decoding=\"async\" style=\"display: block; height: auto; max-width: 100%;\" src=\"https:\/\/mastertrend.info\/wp-content\/uploads\/2025\/01\/1736598858_798_Crea-Tu-Primera-Aplicacion-Web-Una-App-de-Notas-Sencilla.png\" alt=\"La page d&#039;accueil du site web.dev avec des ressources d&#039;apprentissage pour HTML, CSS et JavaScript.\" width=\"1388\" height=\"734\" title=\"\"> <\/picture><\/figure>\n<h2 id=\"the-app-structure\">La structure de l&#039;application<\/h2>\n<p>L&#039;application que vous allez cr\u00e9er sera compos\u00e9e de trois fichiers simples\u00a0: index.html, styles.css et script.js. \ud83d\uddc2\ufe0f<\/p>\n<p>Il n&#039;y a aucune exigence particuli\u00e8re pour ex\u00e9cuter l&#039;application, vous avez juste besoin d&#039;un navigateur Web. Il n&#039;y a pas de fonctionnalit\u00e9 backend, vous n&#039;avez donc pas besoin d&#039;un langage de script comme PHP ou d&#039;un serveur Web local. Une fois que vous avez termin\u00e9, vous pouvez ouvrir le <a title=\"Comment configurer un serveur web Linux local sous Windows 11\" href=\"https:\/\/mastertrend.info\/fr\/serveur-web-linux-local\/\" target=\"_blank\" rel=\"noopener\" data-wpil-monitor-id=\"5749\">fichier index.html directement dans votre navigateur<\/a> et tout s&#039;arrangera. \ud83d\ude0a<\/p>\n<p>Il est important de noter que cette application enregistre votre texte sans l&#039;\u00e9crire dans un fichier sp\u00e9cifique sur le disque, car JavaScript ne peut pas acc\u00e9der au syst\u00e8me de fichiers. Utilise l&#039;API Web Storage, une alternative puissante aux cookies. \ud83c\udf6a\ud83d\udcbe<\/p>\n<h2 id=\"how-to-build-the-note-taker\">Comment cr\u00e9er le preneur de notes<\/h2>\n<p>Cr\u00e9ez les trois fichiers suivants dans le m\u00eame r\u00e9pertoire, puis ouvrez index.html dans un navigateur Web. Alternativement, vous pouvez t\u00e9l\u00e9charger les fichiers \u00e0 partir de <a href=\"https:\/\/github.com\/bobbykjack\/text\" target=\"_blank\" rel=\"noopener\">ce d\u00e9p\u00f4t GitHub<\/a>. \ud83d\udce5<\/p>\n<h3 id=\"building-the-structure-with-html\">Construire la structure avec HTML<\/h3>\n<p>Le fichier index.html d\u00e9finit la structure du contenu de votre application en HTML. Incluez des r\u00e9f\u00e9rences aux deux autres fichiers afin qu&#039;un navigateur puisse les combiner pour le produit final.<\/p>\n<p>Comme tous les documents HTML, la structure de niveau sup\u00e9rieur comprend une section d&#039;en-t\u00eate contenant des m\u00e9tadonn\u00e9es et une section de corps contenant le contenu r\u00e9el qui appara\u00eetra sur la page\u00a0:<\/p>\n<pre><code class=\"hljs html\"><span class=\"hljs-meta\">HTML<\/span>&gt;\r\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">HTML<\/span>&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">t\u00eate<\/span>&gt;<\/span>\r\n    ...\r\n<span class=\"hljs-tag\"><span class=\"hljs-name\">t\u00eate<\/span>&gt;<\/span><\/code><\/pre>\n<p><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">corps<\/span>&gt;<\/span><br \/>\n&#8230;<br \/>\n<span class=\"hljs-tag\"><span class=\"hljs-name\">corps<\/span>&gt;<\/span><br \/>\n<span class=\"hljs-tag\"><span class=\"hljs-name\">HTML<\/span>&gt;<\/span><\/p>\n<pre><code class=\"hljs html\"><\/code><\/pre>\n<pre><code class=\"hljs html\"><\/code><\/pre>\n<p>Les m\u00e9tadonn\u00e9es dans l&#039;en-t\u00eate sont tr\u00e8s br\u00e8ves, avec juste un titre de page (qui appara\u00eet dans la barre de titre de votre navigateur) et une r\u00e9f\u00e9rence au fichier styles.css :<\/p>\n<pre><code class=\"hljs html\">    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">titre<\/span>&gt;<\/span>Texte<span class=\"hljs-tag\"><span class=\"hljs-name\">titre<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">lien<\/span> <span class=\"hljs-attr\">rel<\/span>=<span class=\"hljs-string\">\u00ab feuille de style \u00bb<\/span> <span class=\"hljs-attr\">href<\/span>=<span class=\"hljs-string\">\u00ab\u00a0styles.css\u00a0\u00bb<\/span> \/&gt;<\/span>\r\n<\/code><\/pre>\n<p>Le corps est plus compliqu\u00e9, mais il n&#039;y a que quelques parties importantes :<\/p>\n<pre><code class=\"hljs html\">    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">identifiant<\/span>=<span class=\"hljs-string\">&quot;comptoir&quot;<\/span>&gt;<\/span>\r\n        mots: <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">port\u00e9e<\/span> <span class=\"hljs-attr\">identifiant<\/span>=<span class=\"hljs-string\">&quot;mots&quot;<\/span>&gt;<\/span>0<span class=\"hljs-tag\"><span class=\"hljs-name\">port\u00e9e<\/span>&gt;<\/span>\r\n        \/ caract\u00e8res : <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">port\u00e9e<\/span> <span class=\"hljs-attr\">identifiant<\/span>=<span class=\"hljs-string\">&quot;chars&quot;<\/span>&gt;<\/span>0<span class=\"hljs-tag\"><span class=\"hljs-name\">port\u00e9e<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\"><span class=\"hljs-name\">div<\/span>&gt;<\/span><\/code><\/pre>\n<p><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">zone de texte<\/span> <span class=\"hljs-attr\">identifiant<\/span>=<span class=\"hljs-string\">&quot;texte&quot;<\/span> <span class=\"hljs-attr\">mise au point automatique<\/span>=<span class=\"hljs-string\">\u00ab1\u00bb<\/span>&gt;<\/span><span class=\"hljs-tag\"><span class=\"hljs-name\">zone de texte<\/span>&gt;<\/span><\/p>\n<pre><code class=\"hljs html\"><\/code><\/pre>\n<p><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">sc\u00e9nario<\/span> <span class=\"hljs-attr\">source<\/span>=<span class=\"hljs-string\">\u00abscript.js\u00bb<\/span>&gt;<\/span><span class=\"hljs-tag\"><span class=\"hljs-name\">sc\u00e9nario<\/span>&gt;<\/span><\/p>\n<pre><code class=\"hljs html\"><\/code><\/pre>\n<pre><code class=\"hljs html\"><\/code><\/pre>\n<p>L&#039;\u00e9l\u00e9ment div contient le nombre de mots et de caract\u00e8res de l&#039;application. Il sera situ\u00e9 en haut de l&#039;application Web et sera mis \u00e0 jour \u00e0 chaque fois que le texte change.<\/p>\n<p>Notez les attributs id, qui sont essentiels \u00e0 l\u2019op\u00e9ration. La valeur d&#039;un identifiant doit \u00eatre unique, afin que l&#039;application puisse l&#039;utiliser pour identifier un \u00e9l\u00e9ment sp\u00e9cifique. Cela peut nous aider \u00e0 styliser ces \u00e9l\u00e9ments et \u00e9galement \u00e0 les cibler lors de l\u2019ajout de fonctionnalit\u00e9s.<\/p>\n<p>La zone de texte est un \u00e9l\u00e9ment de formulaire int\u00e9gr\u00e9 qui vous permet de saisir du texte simple dans un navigateur. Gr\u00e2ce \u00e0 l&#039;attribut autofocus, vous serez pr\u00eat \u00e0 \u00e9crire d\u00e8s que la page se charge. Enfin, la page fait r\u00e9f\u00e9rence au fichier javascript, script.js.<\/p>\n<p>\u00c0 ce stade, vous pouvez ouvrir le fichier index.html dans un navigateur. Cela ne fera rien pour le moment, et cela n&#039;aura m\u00eame pas l&#039;air bien, mais il est utile de tester votre application \u00e0 chaque \u00e9tape pour vous assurer que les bases fonctionnent comme pr\u00e9vu.<\/p>\n<figure><picture><source media=\"(min-width: 1024px)\" data-=\"\" \/><source media=\"(min-width: 768px)\" data-=\"\" \/><source media=\"(min-width: 481px)\" data-=\"\" \/><source media=\"(min-width: 0px)\" data-=\"\" \/><img decoding=\"async\" style=\"display: block; height: auto; max-width: 100%;\" src=\"https:\/\/mastertrend.info\/wp-content\/uploads\/2025\/01\/1736598858_678_Crea-Tu-Primera-Aplicacion-Web-Una-App-de-Notas-Sencilla.png\" alt=\"Une vue de l&#039;application Web de prise de notes avec les styles de navigateur par d\u00e9faut, affichant tout regroup\u00e9 dans le coin sup\u00e9rieur gauche.\" width=\"960\" height=\"569\" title=\"\"> <\/picture><\/figure>\n<h3 id=\"making-things-look-good-with-css\">Les rendre beaux avec CSS<\/h3>\n<p>CSS vous permet de styliser des parties de votre page Web en ciblant ces parties et en sp\u00e9cifiant des valeurs pour des propri\u00e9t\u00e9s telles que la taille de la police et la couleur d&#039;arri\u00e8re-plan. Cet exemple d&#039;application n&#039;a pas besoin d&#039;une conception tr\u00e8s raffin\u00e9e car son interface est tr\u00e8s basique. Cependant, nous pouvons adoucir les asp\u00e9rit\u00e9s avec une touche de style. \ud83c\udfa8\u2728<\/p>\n<p>Tout d\u2019abord, stylisez le corps pour d\u00e9finir la conception globale\u00a0:<\/p>\n<pre><code class=\"hljs css\"><span class=\"hljs-selector-tag\">corps<\/span> {\r\n    <span class=\"hljs-selector-tag\">marge<\/span>: 0;\r\n    <span class=\"hljs-selector-tag\">rembourrage<\/span>: 0;\r\n    <span class=\"hljs-selector-tag\">afficher<\/span>: <span class=\"hljs-selector-tag\">grille<\/span>;\r\n    <span class=\"hljs-selector-tag\">hauteur minimale<\/span>: 100<span class=\"hljs-selector-tag\">vh<\/span>;\r\n    <span class=\"hljs-selector-tag\">grille-mod\u00e8le-lignes<\/span>: <span class=\"hljs-selector-tag\">contenu minimal<\/span> 1<span class=\"hljs-selector-tag\">fr<\/span>;\r\n}\r\n<\/code><\/pre>\n<p>Este CSS utiliza la disposici\u00f3n en cuadr\u00edcula para posicionar los conteos de palabras y caracteres en una fila estrecha sobre el textarea. La propiedad grid-template-rows especifica que la fila del conteo debe ser lo m\u00e1s corta posible (min-content) y el textarea debe llenar el espacio restante (1fr).<\/p>\n<p>La ligne de compteur a un style de base pour la diff\u00e9rencier du reste du texte, principalement par son arri\u00e8re-plan :<\/p>\n<pre><code class=\"hljs css\"><span class=\"hljs-selector-id\">Compteur #<\/span> {\r\n    <span class=\"hljs-selector-tag\">famille de polices<\/span>: <span class=\"hljs-selector-tag\">sans empattement<\/span>;\r\n    <span class=\"hljs-selector-tag\">couleur d&#039;arri\u00e8re-plan<\/span>: <span class=\"hljs-selector-id\">#f7f7f7<\/span>;\r\n    <span class=\"hljs-selector-tag\">alignement du texte<\/span>: <span class=\"hljs-selector-tag\">centre<\/span>;\r\n    <span class=\"hljs-selector-tag\">largeur<\/span>: 100%;\r\n    <span class=\"hljs-selector-tag\">rembourrage<\/span>: 0<span class=\"hljs-selector-class\">.5em<\/span> 0;\r\n}\r\n<\/code><\/pre>\n<p>Enfin, la zone de texte est con\u00e7ue pour afficher un texte lisible avec suffisamment d&#039;espace pour respirer. La ligne s\u00e9parant les comptes du texte est en fait la bordure sup\u00e9rieure de cette zone de texte.<\/p>\n<pre><code class=\"hljs css\"><span class=\"hljs-selector-tag\">zone de texte<\/span> {\r\n    <span class=\"hljs-selector-tag\">largeur<\/span>: 100%;\r\n    <span class=\"hljs-selector-tag\">hauteur<\/span>: 100%;\r\n    <span class=\"hljs-selector-tag\">taille de police<\/span>: 16<span class=\"hljs-selector-tag\">pt<\/span>;\r\n    <span class=\"hljs-selector-tag\">rembourrage<\/span>: 1<span class=\"hljs-selector-tag\">dans<\/span>;\r\n    <span class=\"hljs-selector-tag\">dimensionnement des bo\u00eetes<\/span>: <span class=\"hljs-selector-tag\">bordure-bo\u00eete<\/span>;\r\n    <span class=\"hljs-selector-tag\">contour<\/span>: 0;\r\n    <span class=\"hljs-selector-tag\">fronti\u00e8re<\/span>: <span class=\"hljs-selector-tag\">aucun<\/span>;\r\n    <span class=\"hljs-selector-tag\">bordure sup\u00e9rieure<\/span>: 1<span class=\"hljs-selector-tag\">px<\/span> <span class=\"hljs-selector-tag\">solide<\/span> <span class=\"hljs-selector-id\">#999<\/span>;\r\n}<\/code><\/pre>\n<figure><picture><source media=\"(min-width: 1024px)\" data-=\"\" \/><source media=\"(min-width: 768px)\" data-=\"\" \/><source media=\"(min-width: 481px)\" data-=\"\" \/><source media=\"(min-width: 0px)\" data-=\"\" \/><img decoding=\"async\" style=\"display: block; height: auto; max-width: 100%;\" src=\"https:\/\/mastertrend.info\/wp-content\/uploads\/2025\/01\/1736598859_152_Crea-Tu-Primera-Aplicacion-Web-Una-App-de-Notas-Sencilla.png\" alt=\"L&#039;application de prise de notes avec des styles personnalis\u00e9s affiche la barre de d\u00e9compte en haut avec une zone de texte pleine taille en dessous.\" width=\"960\" height=\"569\" title=\"\"> <\/picture><\/figure>\n<h3 id=\"adding-functionality-with-javascript\">Ajout de fonctionnalit\u00e9s avec JavaScript<\/h3>\n<p>Une fois la structure et le style en place, vous \u00eates pr\u00eat \u00e0 ajouter des fonctionnalit\u00e9s\u00a0: le code qui permet \u00e0 cette application simple de faire r\u00e9ellement quelque chose. \ud83d\udee0\ufe0f<\/p>\n<p>Avant de commencer \u00e0 \u00e9crire m\u00eame le code le plus simple, c&#039;est une bonne id\u00e9e de comprendre ce que vous voulez qu&#039;il fasse. Dans ce cas, il n\u2019y a que quelques exigences g\u00e9n\u00e9rales :<\/p>\n<ul>\n<li>Enregistrez le texte saisi et rechargez-le si n\u00e9cessaire.<\/li>\n<li>Mettez \u00e0 jour le nombre de caract\u00e8res et de mots pour fournir des statistiques en temps r\u00e9el. \ud83d\udcca<\/li>\n<\/ul>\n<p>Ces deux exigences impliquent la mise \u00e0 jour d\u2019\u00e9l\u00e9ments dans le document. Le script commence donc par obtenir des r\u00e9f\u00e9rences \u00e0 ces n\u0153uds \u00e0 l&#039;aide de la m\u00e9thode getElementById\u00a0:<\/p>\n<pre><code class=\"hljs js\"><span class=\"hljs-keyword\">constante<\/span> mots = <span class=\"hljs-built_in\">document<\/span>.getElementById(<span class=\"hljs-string\">&quot;mots&quot;<\/span>);\r\n<span class=\"hljs-keyword\">constante<\/span> caract\u00e8res = <span class=\"hljs-built_in\">document<\/span>.getElementById(<span class=\"hljs-string\">&quot;chars&quot;<\/span>);\r\n<span class=\"hljs-keyword\">constante<\/span> zone de texte = <span class=\"hljs-built_in\">document<\/span>.getElementById(<span class=\"hljs-string\">&quot;texte&quot;<\/span>);\r\n<\/code><\/pre>\n<p>Notez que les mots, les caract\u00e8res et le texte sont les identifiants de leurs \u00e9l\u00e9ments respectifs dans le document, attribu\u00e9s dans le fichier HTML avec l&#039;attribut id.<\/p>\n<p>Ensuite, nous avons besoin que l\u2019application r\u00e9agisse lorsque le texte est modifi\u00e9\u00a0:<\/p>\n<pre><code class=\"hljs js\">zone de texte.addEventListener(<span class=\"hljs-string\">&quot;saisir&quot;<\/span>, <span class=\"hljs-function\"><span class=\"hljs-keyword\">fonction<\/span>(<span class=\"hljs-params\">ev<\/span>) <\/span>{ localStorage.setItem(<span class=\"hljs-string\">&quot;texte&quot;<\/span>, valeur cible ev); update_counts(ev.target.value); });\r\n<\/code><\/pre>\n<p>Un \u00e9couteur d&#039;\u00e9v\u00e9nements est une fonction que JavaScript ex\u00e9cutera automatiquement lorsqu&#039;un certain \u00e9v\u00e9nement se produit. Dans ce cas, nous attachons un \u00e9couteur au n\u0153ud textarea, qui est ex\u00e9cut\u00e9 lorsque l&#039;\u00e9v\u00e9nement \u00ab\u00a0input\u00a0\u00bb se produit. C&#039;est-\u00e0-dire lorsque quelqu&#039;un interagit avec la zone de texte.<\/p>\n<p>Ensuite, nous utilisons l\u2019API Web Storage pour enregistrer le contenu actuel de la zone de texte, qui provient de ev.target.value. Dans cette structure, ev est un objet repr\u00e9sentant l&#039;\u00e9v\u00e9nement qui a d\u00e9clench\u00e9 l&#039;\u00e9couteur, ev.target est le n\u0153ud qui a re\u00e7u l&#039;\u00e9v\u00e9nement et ev.target.value est le texte de cette zone de texte.<\/p>\n<p>La m\u00e9thode setItem prend deux param\u00e8tres\u00a0: un nom de cl\u00e9 \u00e0 associer aux donn\u00e9es et les donn\u00e9es r\u00e9elles \u00e0 stocker.<\/p>\n<p>Ensuite, nous appelons update_counts(), en passant le m\u00eame texte. Nous expliquerons cette fonctionnalit\u00e9 dans un instant.<\/p>\n<p>Maintenant que nous enregistrons le texte, vous souhaiterez le charger \u00e0 nouveau lorsque l&#039;application s&#039;ouvre ou se recharge. Nous pouvons nous en occuper en utilisant un autre \u00e9couteur\u00a0:<\/p>\n<pre><code class=\"hljs js\"><span class=\"hljs-built_in\">fen\u00eatre<\/span>.addEventListener(<span class=\"hljs-string\">&quot;charger&quot;<\/span>, <span class=\"hljs-function\"><span class=\"hljs-keyword\">fonction<\/span>(<span class=\"hljs-params\">ev<\/span>) <\/span>{\r\n    <span class=\"hljs-keyword\">var<\/span> texte = localStorage.getItem(<span class=\"hljs-string\">&quot;texte&quot;<\/span>); textarea.value = texte; update_counts(texte); });\r\n<\/code><\/pre>\n<p>Cet \u00e9couteur g\u00e8re l&#039;\u00e9v\u00e9nement de chargement qui se produit sur l&#039;objet fen\u00eatre, une repr\u00e9sentation de niveau sup\u00e9rieur de la fen\u00eatre du navigateur. Lorsque la fen\u00eatre se charge, un appel \u00e0 getItem() renvoie la valeur de texte stock\u00e9e \u00e0 partir du stockage local. Ce code d\u00e9finit ensuite la valeur de la zone de texte sur le texte charg\u00e9 et, comme l&#039;\u00e9couteur ci-dessus, appelle update_counts() avec ce texte.<\/p>\n<p>Le travail restant est effectu\u00e9 dans la fonction update_counts() qui ressemble \u00e0 ceci\u00a0:<\/p>\n<pre><code class=\"hljs js\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">fonction<\/span>\u00a0<span class=\"hljs-title\">update_counts<\/span>(<span class=\"hljs-params\">texte<\/span>) <\/span>{ chars.innerHTML = texte.length; mots.innerHTML = texte.split(<span class=\"hljs-string\">' '<\/span>).longueur; }\r\n<\/code><\/pre>\n<p>Contrairement \u00e0 une zone de texte, le texte normal n&#039;a pas de propri\u00e9t\u00e9 de valeur, nous d\u00e9finissons donc la propri\u00e9t\u00e9 innerHTML \u00e0 la place. La propri\u00e9t\u00e9 de longueur d&#039;une cha\u00eene est une propri\u00e9t\u00e9 simple en lecture seule qui nous donne le nombre de caract\u00e8res.<\/p>\n<p>text.split(&#039; &#039;) divise la cha\u00eene au niveau des caract\u00e8res d&#039;espacement, renvoyant le r\u00e9sultat sous forme de tableau de cha\u00eenes. Comme les cha\u00eenes, les tableaux ont une propri\u00e9t\u00e9 de longueur qui nous donne le nombre d&#039;\u00e9l\u00e9ments dans un tableau.<\/p>\n<p>Cependant, si vous testez ce code, vous remarquerez peut-\u00eatre quelques erreurs\u00a0:<\/p>\n<ol>\n<li>Il ne comptera pas correctement un mot seul sur une ligne, car il n&#039;y a pas de caract\u00e8res d&#039;espace autour de lui.<\/li>\n<li>Sans aucun texte, il signalera un seul mot en raison du fonctionnement de la division.<\/li>\n<\/ol>\n<p>Pour r\u00e9soudre le premier probl\u00e8me, vous pouvez utiliser une expression r\u00e9guli\u00e8re (\\s signifie \u00ab\u00a0un caract\u00e8re vide\u00a0\u00bb) au lieu d&#039;un espace. Pour r\u00e9soudre le deuxi\u00e8me probl\u00e8me, filtrez les cha\u00eenes vides du r\u00e9sultat\u00a0:<\/p>\n<pre><code class=\"hljs js\">    mots.innerHTML = texte.split(<span class=\"hljs-regexp\">\/\\s\/<\/span>).filtre(<span class=\"hljs-function\"><span class=\"hljs-keyword\">fonction<\/span>(<span class=\"hljs-params\">n<\/span>) <\/span>{ <span class=\"hljs-keyword\">retour<\/span> n != <span class=\"hljs-string\">''<\/span>; }).longueur;\r\n<\/code><\/pre>\n<p>Si vous ne comprenez pas enti\u00e8rement cette ligne, consultez les pages MDN pour <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String\/split\" target=\"_blank\" rel=\"noopener noreferrer\">diviser<\/a> et <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/filter\" target=\"_blank\" rel=\"noopener noreferrer\">filtre<\/a>.<\/p>\n<figure><picture><source media=\"(min-width: 1024px)\" data-=\"\" \/><source media=\"(min-width: 768px)\" data-=\"\" \/><source media=\"(min-width: 481px)\" data-=\"\" \/><source media=\"(min-width: 0px)\" data-=\"\" \/><img decoding=\"async\" style=\"display: block; height: auto; max-width: 100%;\" src=\"https:\/\/mastertrend.info\/wp-content\/uploads\/2025\/01\/1736598859_129_Crea-Tu-Primera-Aplicacion-Web-Una-App-de-Notas-Sencilla.png\" alt=\"L&#039;application Web avec un exemple de texte, affichant le nombre pr\u00e9cis de caract\u00e8res et de mots.\" width=\"960\" height=\"569\" title=\"\"> <\/picture><\/figure>\n<hr \/>\n<p>Vous pouvez cr\u00e9er de nombreuses applications Web utiles avec seulement quelques fichiers. Vous pouvez \u00e9galement \u00e9tendre cette application de notes simple pour ajouter plus de fonctionnalit\u00e9s. Par exemple, vous pouvez utiliser le <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Window\/location\" target=\"_blank\" rel=\"noopener\" data-schema-attribute=\"mentions\">propri\u00e9t\u00e9 window.location<\/a> pour r\u00e9cup\u00e9rer l&#039;URL actuelle et prendre en charge plusieurs notes en faisant varier le nom que vous transmettez \u00e0 localStorage.setItem. \ud83d\uddd2\ufe0f\ud83c\udf0d<\/p>","protected":false},"excerpt":{"rendered":"<p>Cr\u00e9ez votre premi\u00e8re application Web et enregistrez des notes avec un compteur de mots. Apprenez facilement, rapidement et gratuitement ! \ud83c\udf10\ud83d\udd8b\ufe0f\u2728<\/p>","protected":false},"author":1,"featured_media":49198,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ai_generated_summary":"","iawp_total_views":39,"jnews-multi-image_gallery":[],"jnews_single_post":[],"jnews_primary_category":[],"jnews_social_meta":[],"jnews_review":[],"enable_review":"","type":"","name":"","summary":"","brand":"","sku":"","good":[],"bad":[],"score_override":"","override_value":"","rating":[],"price":[],"jnews_override_counter":[],"footnotes":""},"categories":[1435],"tags":[1445,1558],"class_list":["post-32655","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriales","tag-evergreencontent","tag-techtips"],"_links":{"self":[{"href":"https:\/\/mastertrend.info\/fr\/wp-json\/wp\/v2\/posts\/32655","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mastertrend.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mastertrend.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mastertrend.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mastertrend.info\/fr\/wp-json\/wp\/v2\/comments?post=32655"}],"version-history":[{"count":0,"href":"https:\/\/mastertrend.info\/fr\/wp-json\/wp\/v2\/posts\/32655\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mastertrend.info\/fr\/wp-json\/wp\/v2\/media\/49198"}],"wp:attachment":[{"href":"https:\/\/mastertrend.info\/fr\/wp-json\/wp\/v2\/media?parent=32655"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mastertrend.info\/fr\/wp-json\/wp\/v2\/categories?post=32655"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mastertrend.info\/fr\/wp-json\/wp\/v2\/tags?post=32655"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}