{"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":"crea-la-tua-prima-app-web","status":"publish","type":"post","link":"https:\/\/mastertrend.info\/it\/crea-tu-primera-app-web\/","title":{"rendered":"Crea la tua prima app web e impara a programmare senza stress \ud83d\ude80\ud83d\udcbb"},"content":{"rendered":"<h2 class=\"table-content-link\">Crea la tua prima app web: note + contatore facile e veloce \ud83d\udcdd\u26a1<\/h2>\n<p>Iniziare a programmare pu\u00f2 sembrare complicato, con cos\u00ec tanti linguaggi, framework e metodologie da considerare. A volte pu\u00f2 sembrare pi\u00f9 semplice delegare tutto a un&#039;intelligenza artificiale. Non preoccuparti! Programmare per il web pu\u00f2 essere semplice, divertente e, soprattutto, completamente gratuito! \ud83c\udf10\u2728<\/p>\n<h2 id=\"what-you-rsquo-ll-build\">Cosa stai per costruire<\/h2>\n<p>Seguendo questo tutorial, creerai una semplice applicazione web per memorizzare note di testo e contare caratteri e parole.<\/p>\n<p>L&#039;app conserver\u00e0 i dati, quindi ricorder\u00e0 il testo quando ricarichi o riapri la pagina. Ci\u00f2 significa che avrai un modo comodo per salvare qualsiasi testo a cui vorrai fare riferimento in seguito, come indirizzi, URL, ecc. \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 esempio di una semplice applicazione web basata su testo che visualizza note, tra cui una voce di calendario e un elenco di URL.\" width=\"960\" height=\"569\" title=\"\"> <\/picture><\/figure>\n<p>Conta anche i caratteri e le parole, il che rappresenta una buona introduzione alla gestione delle stringhe (testo). Naturalmente l&#039;app \u00e8 molto semplice: ecco lo scopo! Ma con questo tutorial imparerai le basi dello sviluppo di un&#039;applicazione web e poi il mondo sar\u00e0 nelle tue mani. \ud83e\uddaa\ud83d\udcbb<\/p>\n<h2 id=\"how-you-rsquo-ll-build-it\">Come pensi di costruirlo?<\/h2>\n<p>Sebbene le applicazioni web siano molto diverse, in genere utilizzano tre tecnologie principali: HTML, CSS e JavaScript. Prima di iniziare \u00e8 fondamentale comprenderne i ruoli. \ud83d\udcda<\/p>\n<ul>\n<li>HTML: Hypertext Markup Language consente di definire la struttura dei contenuti. Con questo strumento \u00e8 possibile contrassegnare un testo in base al suo significato, indicando ad esempio se si tratta di un paragrafo, di un titolo o di un elemento di un elenco.<\/li>\n<li>CSS: i fogli di stile a cascata consentono di definire lo stile dei contenuti. Utilizzando questo linguaggio, puoi colorare un paragrafo di verde, rendere tutti i link in grassetto o posizionare una barra laterale accanto all&#039;articolo principale. \ud83c\udfa8<\/li>\n<li>JavaScript: con questo linguaggio di programmazione puoi aggiungere funzionalit\u00e0 al tuo sito web. \u00c8 possibile fare in modo che i pulsanti mostrino o nascondano parti del documento quando vengono cliccati oppure implementare un elaboratore di testi completo o un videogioco. \ud83c\udfae<\/li>\n<\/ul>\n<p>Lui <a href=\"https:\/\/web.dev\" target=\"_blank\" rel=\"noopener noreferrer\">sito 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 homepage del sito web.dev con risorse didattiche per HTML, CSS e JavaScript.\" width=\"1388\" height=\"734\" title=\"\"> <\/picture><\/figure>\n<h2 id=\"the-app-structure\">La struttura dell&#039;app<\/h2>\n<p>L&#039;app che creerai sar\u00e0 composta da tre semplici file: index.html, styles.css e script.js. \ud83d\uddc2\ufe0f<\/p>\n<p>Non ci sono requisiti particolari per utilizzare l&#039;app, \u00e8 sufficiente un browser web. Non c&#039;\u00e8 alcuna funzionalit\u00e0 backend, quindi non hai bisogno di un linguaggio di scripting come PHP o di un server web locale. Una volta terminato, puoi aprire il <a title=\"Come configurare un server web Linux locale su Windows 11\" href=\"https:\/\/mastertrend.info\/it\/server-web-locale-linux\/\" target=\"_blank\" rel=\"noopener\" data-wpil-monitor-id=\"5749\">file index.html direttamente nel tuo browser<\/a> e tutto si sistemer\u00e0. \ud83d\ude0a<\/p>\n<p>\u00c8 importante notare che questa app salva il testo senza scriverlo in un file specifico sul disco, poich\u00e9 JavaScript non pu\u00f2 accedere al file system. Utilizza la Web Storage API, una potente alternativa ai cookie. \ud83c\udf6a\ud83d\udcbe<\/p>\n<h2 id=\"how-to-build-the-note-taker\">Come costruire il prenditore di appunti<\/h2>\n<p>Crea i tre file seguenti nella stessa directory e poi apri index.html in un browser web. In alternativa, puoi scaricare i file da <a href=\"https:\/\/github.com\/bobbykjack\/text\" target=\"_blank\" rel=\"noopener\">questo repository GitHub<\/a>. \ud83d\udce5<\/p>\n<h3 id=\"building-the-structure-with-html\">Costruire la struttura con HTML<\/h3>\n<p>Il file index.html definisce la struttura del contenuto della tua app in HTML. Includere riferimenti agli altri due file in modo che un browser possa combinarli per il prodotto finale.<\/p>\n<p>Come tutti i documenti HTML, la struttura di primo livello include una sezione head contenente metadati e una sezione body contenente il contenuto effettivo che apparir\u00e0 sulla pagina:<\/p>\n<pre><code class=\"hljs html\"><span class=\"hljs-meta\">codice html<\/span>&gt;\r\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">codice html<\/span>&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">Testa<\/span>&gt;<\/span>\r\n    ...\r\n<span class=\"hljs-tag\"><span class=\"hljs-name\">Testa<\/span>&gt;<\/span><\/code><\/pre>\n<p><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">corpo<\/span>&gt;<\/span><br \/>\n&#8230;<br \/>\n<span class=\"hljs-tag\"><span class=\"hljs-name\">corpo<\/span>&gt;<\/span><br \/>\n<span class=\"hljs-tag\"><span class=\"hljs-name\">codice html<\/span>&gt;<\/span><\/p>\n<pre><code class=\"hljs html\"><\/code><\/pre>\n<pre><code class=\"hljs html\"><\/code><\/pre>\n<p>I metadati nell&#039;intestazione sono molto brevi, con solo un titolo della pagina (che appare nella barra del titolo del browser) e un riferimento al file styles.css:<\/p>\n<pre><code class=\"hljs html\">    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">titolo<\/span>&gt;<\/span>Testo<span class=\"hljs-tag\"><span class=\"hljs-name\">titolo<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">collegamento<\/span> <span class=\"hljs-attr\">rel<\/span>=<span class=\"hljs-string\">&quot;foglio di stile&quot;<\/span> <span class=\"hljs-attr\">href<\/span>=<span class=\"hljs-string\">&quot;stili.css&quot;<\/span> \/&gt;<\/span>\r\n<\/code><\/pre>\n<p>Il corpo \u00e8 pi\u00f9 complicato, ma le parti importanti sono solo poche:<\/p>\n<pre><code class=\"hljs html\">    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">&quot;contatore&quot;<\/span>&gt;<\/span>\r\n        parole: <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">campata<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">&quot;parole&quot;<\/span>&gt;<\/span>0<span class=\"hljs-tag\"><span class=\"hljs-name\">campata<\/span>&gt;<\/span>\r\n        \/ caratteri: <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">campata<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">&quot;caratteri&quot;<\/span>&gt;<\/span>0<span class=\"hljs-tag\"><span class=\"hljs-name\">campata<\/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\">area di testo<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">&quot;testo&quot;<\/span> <span class=\"hljs-attr\">messa a fuoco automatica<\/span>=<span class=\"hljs-string\">\u00ab1\u00bb<\/span>&gt;<\/span><span class=\"hljs-tag\"><span class=\"hljs-name\">area di testo<\/span>&gt;<\/span><\/p>\n<pre><code class=\"hljs html\"><\/code><\/pre>\n<p><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">sceneggiatura<\/span> <span class=\"hljs-attr\">fonte<\/span>=<span class=\"hljs-string\">\u00abscript.js\u00bb<\/span>&gt;<\/span><span class=\"hljs-tag\"><span class=\"hljs-name\">sceneggiatura<\/span>&gt;<\/span><\/p>\n<pre><code class=\"hljs html\"><\/code><\/pre>\n<pre><code class=\"hljs html\"><\/code><\/pre>\n<p>L&#039;elemento div contiene il conteggio delle parole e dei caratteri dell&#039;app. Sar\u00e0 posizionato nella parte superiore dell&#039;applicazione web e verr\u00e0 aggiornato ogni volta che il testo cambia.<\/p>\n<p>Notare gli attributi id, che sono essenziali per l&#039;operazione. Il valore di un id deve essere univoco, affinch\u00e9 l&#039;app possa utilizzarlo per identificare un elemento specifico. In questo modo potremo definire lo stile di questi elementi e anche ottimizzarli quando aggiungeremo funzionalit\u00e0.<\/p>\n<p>L&#039;area di testo \u00e8 un elemento di un modulo integrato che consente di digitare un testo semplice in un browser. Grazie all&#039;attributo autofocus, sarai pronto a scrivere non appena la pagina verr\u00e0 caricata. Infine, la pagina fa riferimento al file javascript, script.js.<\/p>\n<p>A questo punto puoi aprire il file index.html in un browser. Al momento non far\u00e0 nulla e non avr\u00e0 nemmeno un bell&#039;aspetto, ma \u00e8 utile testare l&#039;app in ogni fase per assicurarsi che le funzioni di base funzionino come previsto.<\/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=\"Una vista dell&#039;app web per prendere appunti con gli stili predefiniti del browser, che mostra tutto raggruppato nell&#039;angolo in alto a sinistra.\" width=\"960\" height=\"569\" title=\"\"> <\/picture><\/figure>\n<h3 id=\"making-things-look-good-with-css\">Renderli pi\u00f9 accattivanti con CSS<\/h3>\n<p>I CSS consentono di definire lo stile di parti della pagina web, prendendo di mira quelle parti e specificando valori per propriet\u00e0 come font-size e background-color. Questa applicazione di esempio non ha bisogno di un design particolarmente raffinato perch\u00e9 la sua interfaccia \u00e8 molto semplice. Tuttavia, possiamo smussare gli angoli pi\u00f9 grezzi con un tocco di stile. \ud83c\udfa8\u2728<\/p>\n<p>Per prima cosa, definisci lo stile del corpo per definire il design generale:<\/p>\n<pre><code class=\"hljs css\"><span class=\"hljs-selector-tag\">corpo<\/span> {\r\n    <span class=\"hljs-selector-tag\">margine<\/span>: 0;\r\n    <span class=\"hljs-selector-tag\">imbottitura<\/span>: 0;\r\n    <span class=\"hljs-selector-tag\">display<\/span>: <span class=\"hljs-selector-tag\">griglia<\/span>;\r\n    <span class=\"hljs-selector-tag\">altezza minima<\/span>: 100<span class=\"hljs-selector-tag\">vh<\/span>;\r\n    <span class=\"hljs-selector-tag\">righe-modello-griglia<\/span>: <span class=\"hljs-selector-tag\">contenuto minimo<\/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 riga del contatore ha uno stile di base per differenziarla dal resto del testo, principalmente attraverso lo sfondo:<\/p>\n<pre><code class=\"hljs css\"><span class=\"hljs-selector-id\">#counter<\/span> {\r\n    <span class=\"hljs-selector-tag\">famiglia di caratteri<\/span>: <span class=\"hljs-selector-tag\">sans-serif<\/span>;\r\n    <span class=\"hljs-selector-tag\">colore di sfondo<\/span>: <span class=\"hljs-selector-id\">#f7f7f7<\/span>;\r\n    <span class=\"hljs-selector-tag\">allineamento del testo<\/span>: <span class=\"hljs-selector-tag\">centro<\/span>;\r\n    <span class=\"hljs-selector-tag\">larghezza<\/span>: 100%;\r\n    <span class=\"hljs-selector-tag\">imbottitura<\/span>: 0<span class=\"hljs-selector-class\">.5em<\/span> 0;\r\n}\r\n<\/code><\/pre>\n<p>Infine, l&#039;area di testo \u00e8 formattata in modo da visualizzare un testo leggibile, con spazio sufficiente per respirare. La linea che separa i conteggi dal testo \u00e8 in realt\u00e0 il bordo superiore di quest&#039;area di testo.<\/p>\n<pre><code class=\"hljs css\"><span class=\"hljs-selector-tag\">area di testo<\/span> {\r\n    <span class=\"hljs-selector-tag\">larghezza<\/span>: 100%;\r\n    <span class=\"hljs-selector-tag\">altezza<\/span>: 100%;\r\n    <span class=\"hljs-selector-tag\">dimensione del carattere<\/span>: 16<span class=\"hljs-selector-tag\">punto<\/span>;\r\n    <span class=\"hljs-selector-tag\">imbottitura<\/span>: 1<span class=\"hljs-selector-tag\">In<\/span>;\r\n    <span class=\"hljs-selector-tag\">dimensionamento delle scatole<\/span>: <span class=\"hljs-selector-tag\">riquadro di confine<\/span>;\r\n    <span class=\"hljs-selector-tag\">schema<\/span>: 0;\r\n    <span class=\"hljs-selector-tag\">confine<\/span>: <span class=\"hljs-selector-tag\">nessuno<\/span>;\r\n    <span class=\"hljs-selector-tag\">bordo superiore<\/span>: 1<span class=\"hljs-selector-tag\">px<\/span> <span class=\"hljs-selector-tag\">solido<\/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;app per prendere appunti con stili personalizzati visualizza la barra di controllo in alto, con un&#039;area di testo a grandezza naturale in basso.\" width=\"960\" height=\"569\" title=\"\"> <\/picture><\/figure>\n<h3 id=\"adding-functionality-with-javascript\">Aggiungere funzionalit\u00e0 con JavaScript<\/h3>\n<p>Una volta definiti la struttura e lo stile, sei pronto ad aggiungere funzionalit\u00e0: il codice che consente a questa semplice app di fare effettivamente qualcosa. \ud83d\udee0\ufe0f<\/p>\n<p>Prima di iniziare a scrivere anche il codice pi\u00f9 semplice, \u00e8 una buona idea capire cosa si vuole che faccia. In questo caso, ci sono solo un paio di requisiti generali:<\/p>\n<ul>\n<li>Salva il testo inserito e ricaricalo quando necessario.<\/li>\n<li>Aggiorna il conteggio dei caratteri e delle parole per fornire statistiche in tempo reale. \ud83d\udcca<\/li>\n<\/ul>\n<p>Entrambi i requisiti comportano l&#039;aggiornamento degli elementi presenti nel documento. Quindi lo script inizia ottenendo riferimenti a questi nodi utilizzando il metodo getElementById:<\/p>\n<pre><code class=\"hljs js\"><span class=\"hljs-keyword\">costante<\/span> parole = <span class=\"hljs-built_in\">documento<\/span>.getElementById(<span class=\"hljs-string\">&quot;parole&quot;<\/span>);\r\n<span class=\"hljs-keyword\">costante<\/span> caratteri = <span class=\"hljs-built_in\">documento<\/span>.getElementById(<span class=\"hljs-string\">&quot;caratteri&quot;<\/span>);\r\n<span class=\"hljs-keyword\">costante<\/span> area di testo = <span class=\"hljs-built_in\">documento<\/span>.getElementById(<span class=\"hljs-string\">&quot;testo&quot;<\/span>);\r\n<\/code><\/pre>\n<p>Si noti che parole, caratteri e testo sono gli ID dei rispettivi elementi nel documento, assegnati nel file HTML con l&#039;attributo id.<\/p>\n<p>Ora abbiamo bisogno che l&#039;app reagisca quando il testo viene modificato:<\/p>\n<pre><code class=\"hljs js\">area di testo.addEventListener(<span class=\"hljs-string\">&quot;ingresso&quot;<\/span>, <span class=\"hljs-function\"><span class=\"hljs-keyword\">funzione<\/span>(<span class=\"hljs-params\">anche<\/span>) <\/span>{ localStorage.setItem(<span class=\"hljs-string\">&quot;testo&quot;<\/span>, ev.valore.destinazione); aggiorna_conteggi(ev.target.value); });\r\n<\/code><\/pre>\n<p>Un event listener \u00e8 una funzione che JavaScript eseguir\u00e0 automaticamente quando si verifica un determinato evento. In questo caso, colleghiamo un listener al nodo textarea, che viene eseguito quando si verifica l&#039;evento &quot;input&quot;. Cio\u00e8 quando qualcuno interagisce con l&#039;area di testo.<\/p>\n<p>Successivamente, utilizziamo la Web Storage API per salvare il contenuto corrente dell&#039;area di testo, che proviene da ev.target.value. In questa struttura, ev \u00e8 un oggetto che rappresenta l&#039;evento che ha attivato l&#039;ascoltatore, ev.target \u00e8 il nodo che ha ricevuto l&#039;evento ed ev.target.value \u00e8 il testo di quell&#039;area di testo.<\/p>\n<p>Il metodo setItem accetta due parametri: un nome chiave da associare ai dati e i dati effettivi da memorizzare.<\/p>\n<p>Successivamente, chiamiamo update_counts(), passando lo stesso testo. Spiegheremo questa funzionalit\u00e0 tra un attimo.<\/p>\n<p>Ora che abbiamo salvato il testo, potrai caricarlo nuovamente quando l&#039;app si apre o si ricarica. Possiamo risolvere questo problema utilizzando un altro listener:<\/p>\n<pre><code class=\"hljs js\"><span class=\"hljs-built_in\">finestra<\/span>.addEventListener(<span class=\"hljs-string\">&quot;carico&quot;<\/span>, <span class=\"hljs-function\"><span class=\"hljs-keyword\">funzione<\/span>(<span class=\"hljs-params\">anche<\/span>) <\/span>{\r\n    <span class=\"hljs-keyword\">variet\u00e0<\/span> testo = localStorage.getItem(<span class=\"hljs-string\">&quot;testo&quot;<\/span>); textarea.value = testo; aggiorna_conteggi(testo); });\r\n<\/code><\/pre>\n<p>Questo listener gestisce l&#039;evento di caricamento che si verifica sull&#039;oggetto finestra, una rappresentazione di primo livello della finestra del browser. Quando la finestra viene caricata, una chiamata a getItem() restituisce il valore di testo memorizzato dalla memoria locale. Questo codice imposta quindi il valore dell&#039;area di testo sul testo caricato e, come il listener sopra, chiama update_counts() con questo testo.<\/p>\n<p>Il lavoro rimanente viene svolto nella funzione update_counts() che si presenta in questo modo:<\/p>\n<pre><code class=\"hljs js\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">funzione<\/span>\u00a0<span class=\"hljs-title\">aggiorna_conteggi<\/span>(<span class=\"hljs-params\">testo<\/span>) <\/span>{ chars.innerHTML = lunghezza testo; parole.innerHTML = testo.split(<span class=\"hljs-string\">' '<\/span>).lunghezza; }\r\n<\/code><\/pre>\n<p>A differenza di un&#039;area di testo, il testo normale non ha una propriet\u00e0 valore, quindi impostiamo al suo posto la propriet\u00e0 innerHTML. La propriet\u00e0 lunghezza di una stringa \u00e8 una semplice propriet\u00e0 di sola lettura che ci fornisce il numero di caratteri.<\/p>\n<p>text.split(&#039; &#039;) divide la stringa in corrispondenza degli spazi, restituendo il risultato come un array di stringhe. Come le stringhe, gli array hanno una propriet\u00e0 lunghezza che fornisce il numero di elementi in un array.<\/p>\n<p>Tuttavia, se si testa questo codice, si potrebbero notare un paio di errori:<\/p>\n<ol>\n<li>Non conter\u00e0 correttamente una parola isolata su una riga, poich\u00e9 non ci sono spazi attorno ad essa.<\/li>\n<li>In assenza di testo, verr\u00e0 segnalata una sola parola, a causa del funzionamento della divisione.<\/li>\n<\/ol>\n<p>Per risolvere il primo problema, \u00e8 possibile suddividere in base a un&#039;espressione regolare (\\s significa &quot;carattere vuoto&quot;) anzich\u00e9 a uno spazio. Per risolvere il secondo, filtrare le stringhe vuote dal risultato:<\/p>\n<pre><code class=\"hljs js\">    parole.innerHTML = testo.split(<span class=\"hljs-regexp\">\/\\S\/<\/span>).filtro(<span class=\"hljs-function\"><span class=\"hljs-keyword\">funzione<\/span>(<span class=\"hljs-params\">N<\/span>) <\/span>{ <span class=\"hljs-keyword\">ritorno<\/span> n != <span class=\"hljs-string\">''<\/span>; }).lunghezza;\r\n<\/code><\/pre>\n<p>Se non hai capito bene questa frase, controlla le pagine MDN per <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String\/split\" target=\"_blank\" rel=\"noopener noreferrer\">diviso<\/a> E <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/filter\" target=\"_blank\" rel=\"noopener noreferrer\">filtro<\/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=\"Applicazione web con testo di esempio, che mostra il conteggio accurato dei caratteri e delle parole.\" width=\"960\" height=\"569\" title=\"\"> <\/picture><\/figure>\n<hr \/>\n<p>\u00c8 possibile creare numerose applicazioni web utili con pochi file. \u00c8 anche possibile estendere questa semplice app per appunti per aggiungere altre funzionalit\u00e0. Ad esempio, puoi usare il <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Window\/location\" target=\"_blank\" rel=\"noopener\" data-schema-attribute=\"mentions\">propriet\u00e0 window.location<\/a> per recuperare l&#039;URL corrente e supportare pi\u00f9 note variando il nome passato a localStorage.setItem. \ud83d\uddd2\ufe0f\ud83c\udf0d<\/p>","protected":false},"excerpt":{"rendered":"<p>Crea la tua prima app web e salva gli appunti con un contatore di parole. Impara facilmente, velocemente e gratuitamente! \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\/it\/wp-json\/wp\/v2\/posts\/32655","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mastertrend.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mastertrend.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mastertrend.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mastertrend.info\/it\/wp-json\/wp\/v2\/comments?post=32655"}],"version-history":[{"count":0,"href":"https:\/\/mastertrend.info\/it\/wp-json\/wp\/v2\/posts\/32655\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mastertrend.info\/it\/wp-json\/wp\/v2\/media\/49198"}],"wp:attachment":[{"href":"https:\/\/mastertrend.info\/it\/wp-json\/wp\/v2\/media?parent=32655"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mastertrend.info\/it\/wp-json\/wp\/v2\/categories?post=32655"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mastertrend.info\/it\/wp-json\/wp\/v2\/tags?post=32655"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}