{"id":6681,"date":"2025-01-11T12:33:11","date_gmt":"2025-01-11T12:33:11","guid":{"rendered":"https:\/\/howtogeek.blog\/it\/?p=6681"},"modified":"2025-01-11T12:33:11","modified_gmt":"2025-01-11T12:33:11","slug":"create-your-first-web-application-a-beginners-guide-to-building-a-simple-notes-app-and-word-counter","status":"publish","type":"post","link":"https:\/\/howtogeek.blog\/it\/create-your-first-web-application-a-beginners-guide-to-building-a-simple-notes-app-and-word-counter\/","title":{"rendered":"Crea la tua prima applicazione Web: una guida per principianti alla creazione di una semplice app per appunti e un contatore di parole"},"content":{"rendered":"<p>Iniziare il tuo viaggio di programmazione potrebbe sembrare scoraggiante in mezzo a una scelta schiacciante di linguaggi e framework. Potresti anche pensare di lasciare che un&#8217;IA gestisca tutto! Tuttavia, la programmazione per il web pu\u00f2 essere entusiasmante, accessibile e completamente gratuita!<\/p>\n<h2 id=\"what-youll-build\">Cosa costruirai<\/h2>\n<p>In questo tutorial creerai una semplice applicazione web progettata per memorizzare note di testo contando i caratteri e le parole in tali note.<\/p>\n<p>Questa applicazione salva in modo persistente i dati, consentendo di recuperare il testo anche dopo aver aggiornato la pagina o averla riaperta. \u00c8 una soluzione pratica per mantenere un rapido accesso al testo importante, che si tratti di indirizzi, URL o altro.<\/p>\n<figure class=\"wp-block-image\"><img alt=\"Un esempio di applicazione web di testo semplice che mostra note tra cui una voce di calendario e un elenco di URL.\" class=\"wp-image\" decoding=\"async\" height=\"569\" loading=\"lazy\" src=\"https:\/\/cdn.howtogeek.blog\/wp-content\/uploads\/2025\/01\/web-app-example.webp\" title=\"Un esempio di applicazione web di testo semplice che mostra note tra cui una voce di calendario e un elenco di URL.\" width=\"960\"\/><\/figure>\n<p>Inoltre, l&#8217;app tiene traccia dei conteggi di caratteri e parole, offrendo un&#8217;eccellente introduzione alla manipolazione delle stringhe. Sebbene l&#8217;applicazione sia di base nel design, questo tutorial ti fornisce competenze fondamentali nello sviluppo di app web, sbloccando vaste possibilit\u00e0 nella codifica.<\/p>\n<h2 id=\"how-youll-build-it\">Come lo costruirai<\/h2>\n<p>Sebbene le applicazioni web possano variare in modo significativo, in genere integrano tre tecnologie essenziali: HTML, CSS e JavaScript. Ognuno di questi componenti svolge una funzione cruciale nello sviluppo web:<\/p>\n<ul>\n<li><strong>HTML:<\/strong> questa \u00e8 la struttura della tua applicazione web, che stabilisce come \u00e8 organizzato il contenuto. HTML definisce se il testo \u00e8 un paragrafo, un&#8217;intestazione o un elemento di elenco.<\/li>\n<li><strong>CSS:<\/strong> i fogli di stile a cascata aggiungono stile al tuo contenuto, consentendoti di cambiare colori, font e layout. Puoi usare CSS per rendere gli elementi in grassetto, regolare i bordi e posizionare gli elementi sullo schermo.<\/li>\n<li><strong>JavaScript:<\/strong> questo linguaggio di programmazione \u00e8 fondamentale per infondere funzionalit\u00e0 nella tua applicazione web. JavaScript pu\u00f2 creare esperienze interattive, come mostrare\/nascondere elementi o creare applicazioni complesse come i giochi.<\/li>\n<\/ul>\n<figure class=\"wp-block-image\"><img alt=\"La homepage del sito web.dev con risorse didattiche per HTML, CSS e JavaScript.\" class=\"wp-image\" decoding=\"async\" height=\"734\" loading=\"lazy\" src=\"https:\/\/cdn.howtogeek.blog\/wp-content\/uploads\/2025\/01\/web-dev-homepage.webp\" title=\"La homepage del sito web.dev con risorse didattiche per HTML, CSS e JavaScript.\" width=\"1388\"\/><\/figure>\n<h2 id=\"the-app-structure\">La struttura dell&#8217;app<\/h2>\n<p>L&#8217;applicazione che stai per creare \u00e8 composta da tre semplici file: <code>index.html<\/code>, <code>styles.css<\/code>, e <code>script.js<\/code>.<\/p>\n<p>Non esistono requisiti avanzati per eseguire questa app: \u00e8 sufficiente un semplice browser web. Poich\u00e9 si tratta di un&#8217;app front-end, non sono necessari linguaggi di scripting back-end come PHP o server locali. Dopo il completamento, apri semplicemente <code>index.html<\/code>nel tuo browser per vedere la tua app in azione.<\/p>\n<p>Questa app sfrutta la Web Storage API per salvare il testo, consentendo di conservare le informazioni senza dover scrivere sui file su disco, poich\u00e9 JavaScript non ha accesso al file system.<\/p>\n<h2 id=\"how-to-build-the-note-taker\">Come costruire il Note Taker<\/h2>\n<p>Inizia creando i tre file necessari nella stessa directory. In alternativa, puoi scaricare i file da <a href=\"https:\/\/github.com\/bobbykjack\/text\" target=\"_blank\">questo repository GitHub<\/a> .<\/p>\n<h3 id=\"building-the-structure-with-html\">Costruire la struttura con HTML<\/h3>\n<p>Il <code>index.html<\/code>file definisce la struttura dei contenuti della tua app. Include riferimenti ai file CSS e JavaScript, consentendo al browser di unirli in un&#8217;esperienza fluida.<\/p>\n<p>Come qualsiasi documento HTML, il framework principale \u00e8 costituito da una sezione head con metadati e da un corpo contenente il contenuto:<\/p>\n<p> <code><br \/>\n<span>&lt;!DOCTYPE html&gt;<\/span><br \/>\n<span>&lt;html&gt;<\/span><br \/>\n<span>&lt;head&gt;<\/span><br \/>\n<span>...&lt;\/head&gt;<\/span><br \/>\n<span>&lt;body&gt;<\/span><br \/>\n<span>...&lt;\/body&gt;<\/span><br \/>\n<span>&lt;\/html&gt;<\/span><br \/>\n<\/code><\/p>\n<p>La sezione della testata contiene brevi metadati, tra cui il titolo della pagina (visibile nella barra del titolo del browser) e un collegamento al <code>styles.css<\/code>file:<\/p>\n<p> <code><br \/>\n<span>&lt;title&gt;Text&lt;\/title&gt;<\/span><br \/>\n<span>&lt;link rel=\"stylesheet\"href=\"styles.css\"\/&gt;<\/span><br \/>\n<\/code><\/p>\n<p>Il corpo \u00e8 pi\u00f9 dettagliato, compresi i componenti chiave:<\/p>\n<p> <code><br \/>\n<span>&lt;div id=\"counter\"&gt;<\/span><br \/>\n<span>words: &lt;span id=\"words\"&gt;0&lt;\/span&gt;<\/span><br \/>\n<span>\/ characters: &lt;span id=\"chars\"&gt;0&lt;\/span&gt;<\/span><br \/>\n<span>&lt;\/div&gt;<\/span><br \/>\n<span>&lt;textarea id=\"text\"autofocus=\"1\"&gt;&lt;\/textarea&gt;<\/span><br \/>\n<span>&lt;script src=\"script.js\"&gt;&lt;\/script&gt;<\/span><br \/>\n<\/code><\/p>\n<p>L&#8217; <code>div<\/code>elemento, identificato come &#8220;counter&#8221;, contiene i conteggi di parole e caratteri. Rimane in alto e si aggiorna dinamicamente man mano che il testo cambia.<\/p>\n<p>\u00c8 fondamentale tenere presente l&#8217;uso degli <code>id<\/code>attributi: i loro valori univoci aiutano a definire lo stile di questi elementi e a orientarli in base alla funzionalit\u00e0.<\/p>\n<p>Fornisce <code>textarea<\/code>un&#8217;area in cui gli utenti possono inserire testo con l&#8217; <code>autofocus<\/code>attributo assicurando che sia pronto per la digitazione al caricamento della pagina. Infine, l&#8217;HTML fa riferimento al <code>script.js<\/code>file.<\/p>\n<p>A questo punto, apri <code>index.html<\/code>in un browser. Non funzioner\u00e0 ancora e potrebbe non apparire del tutto corretto, ma controllare i tuoi progressi a ogni fase \u00e8 utile.<\/p>\n<figure class=\"wp-block-image\"><img alt=\"Una vista dell'app web per prendere appunti con gli stili predefiniti del browser, che mostra tutto raggruppato nell'angolo in alto a sinistra.\" class=\"wp-image\" decoding=\"async\" height=\"569\" loading=\"lazy\" src=\"https:\/\/cdn.howtogeek.blog\/wp-content\/uploads\/2025\/01\/web-app-no-style.webp\" title=\"Una vista dell'app web per prendere appunti con gli stili predefiniti del browser, che mostra tutto raggruppato nell'angolo in alto a sinistra.\" width=\"960\"\/><\/figure>\n<h3 id=\"making-things-look-good-with-css\">Rendere le cose pi\u00f9 belle con CSS<\/h3>\n<p>Sebbene questa app di base non richieda grandi modifiche di design, possiamo migliorarne il layout con un po&#8217; di stile.<\/p>\n<p>Per prima cosa stabiliamo lo stile del corpo per delineare l&#8217;aspetto generale:<\/p>\n<p> <code><br \/>\n<span>body {<\/span><br \/>\n<span> margin: 0;<\/span><br \/>\n<span> padding: 0;<\/span><br \/>\n<span> display: grid;<\/span><br \/>\n<span> min-height: 100vh;<\/span><br \/>\n<span> grid-template-rows: min-content 1fr;<\/span><br \/>\n<span>}<\/span><br \/>\n<\/code><\/p>\n<p>Questo CSS impiega <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/CSS_grid_layout\" target=\"_blank\">un layout a griglia<\/a> per disporre i conteggi di parole e caratteri in una riga stretta sopra l&#8217;area di testo. La <code>grid-template-rows<\/code>propriet\u00e0 determina che la riga di conteggio dovrebbe occupare il minor spazio possibile (min-content) mentre l&#8217;area di testo riempie lo spazio rimanente (1fr).<\/p>\n<p>La riga del contatore riceve uno stile di base per distinguerla dall&#8217;area di testo, principalmente attraverso il suo sfondo:<\/p>\n<p> <code><br \/>\n<span>#counter {<\/span><br \/>\n<span> font-family: sans-serif;<\/span><br \/>\n<span> background-color: #f7f7f7;<\/span><br \/>\n<span> text-align: center;<\/span><br \/>\n<span> width: 100%;<\/span><br \/>\n<span> padding: 0 0.5em 0;<\/span><br \/>\n<span>}<\/span><br \/>\n<\/code><\/p>\n<p>L&#8217;area di testo \u00e8 formattata in modo da garantire che il testo sia leggibile, lasciando uno spazio bianco adeguato:<\/p>\n<p> <code><br \/>\n<span>textarea {<\/span><br \/>\n<span> width: 100%;<\/span><br \/>\n<span> height: 100%;<\/span><br \/>\n<span> font-size: 16pt;<\/span><br \/>\n<span> padding: 1em;<\/span><br \/>\n<span> box-sizing: border-box;<\/span><br \/>\n<span> outline: 0;<\/span><br \/>\n<span> border: none;<\/span><br \/>\n<span> border-top: 1px solid #999;<\/span><br \/>\n<span>}<\/span><br \/>\n<\/code><\/p>\n<figure class=\"wp-block-image\"><img alt=\"L'app per prendere appunti con stili personalizzati mostra la barra del contatore nella parte superiore con un'area di testo a grandezza naturale nella parte inferiore.\" class=\"wp-image\" decoding=\"async\" height=\"569\" loading=\"lazy\" src=\"https:\/\/cdn.howtogeek.blog\/wp-content\/uploads\/2025\/01\/web-app-with-style.webp\" title=\"L'app per prendere appunti con stili personalizzati mostra la barra del contatore nella parte superiore con un'area di testo a grandezza naturale nella parte inferiore.\" width=\"960\"\/><\/figure>\n<h3 id=\"adding-functionality-with-javascript\">Aggiungere funzionalit\u00e0 con JavaScript<\/h3>\n<p>Una volta gettate le basi, \u00e8 il momento di infondere funzionalit\u00e0 nella tua applicazione: il codice che le d\u00e0 vita!<\/p>\n<p>Prima di immergerti nella codifica, \u00e8 essenziale delineare la funzionalit\u00e0 prevista. Per questa applicazione, ti concentrerai su due obiettivi principali:<\/p>\n<ul>\n<li>Mantieni e ricarica il testo inserito.<\/li>\n<li>Aggiorna dinamicamente il numero di caratteri e parole.<\/li>\n<\/ul>\n<p>Queste funzioni richiedono aggiornamenti a certi elementi del documento. Pertanto, inizia ottenendo riferimenti a questi nodi usando il <code>getElementById<\/code>metodo:<\/p>\n<p> <code><br \/>\n<span>const words = document.getElementById(\"words\");<\/span><br \/>\n<span>const chars = document.getElementById(\"chars\");<\/span><br \/>\n<span>const textarea = document.getElementById(\"text\");<\/span><br \/>\n<\/code><\/p>\n<p>Qui, <code>words<\/code>, <code>chars<\/code>, e <code>textarea<\/code>corrispondono alle rispettive sezioni del documento, identificate dai loro attributi ID.<\/p>\n<p>Successivamente, introduci l&#8217;interattivit\u00e0 impostando l&#8217;app in modo che risponda quando il testo viene modificato:<\/p>\n<p> <code><br \/>\n<span>textarea.addEventListener(\"input\", function(ev) {<\/span><br \/>\n<span> localStorage.setItem(\"text\", ev.target.value);<\/span><br \/>\n<span> update_counts(ev.target.value);<\/span><br \/>\n<span>});<\/span><br \/>\n<\/code><\/p>\n<p>Il <code>addEventListener<\/code>metodo associa una funzione da attivare quando si verifica un evento specificato. In questo caso, una volta che l&#8217;utente interagisce con l&#8217;area di testo, l&#8217;evento &#8220;input&#8221; attiva la funzione.<\/p>\n<p>Successivamente, la Web Storage API viene utilizzata per preservare i contenuti correnti dell&#8217;area di testo, a cui si accede tramite <code>ev.target.value<\/code>. Il <code>setItem<\/code>metodo associa una chiave ai dati da archiviare.<\/p>\n<p>Per garantire che il testo venga caricato quando l&#8217;app viene inizializzata o aggiornata, aggiungi un altro listener:<\/p>\n<p> <code><br \/>\n<span>window.addEventListener(\"load\", function(ev) {<\/span><br \/>\n<span> var text = localStorage.getItem(\"text\");<\/span><br \/>\n<span> textarea.value = text;<\/span><br \/>\n<span> update_counts(text);<\/span><br \/>\n<span>});<\/span><br \/>\n<\/code><\/p>\n<p>Questo listener risponde all&#8217;evento di caricamento della finestra. Al caricamento della finestra, recupera il testo salvato e imposta il valore dell&#8217;area di testo di conseguenza, mentre richiama <code>update_counts()<\/code>per aggiornare i conteggi di parole e caratteri.<\/p>\n<p>La funzionalit\u00e0 rimanente risiede nella <code>update_counts()<\/code>funzione, che si presenta in questo modo:<\/p>\n<p> <code><br \/>\n<span>function update_counts(text) {<\/span><br \/>\n<span> chars.innerHTML = text.length;<\/span><br \/>\n<span> words.innerHTML = text.split(' ').length;<\/span><br \/>\n<span>}<\/span><br \/>\n<\/code><\/p>\n<p>A differenza di una textarea, il testo normale non ha un attributo value; quindi, <code>innerHTML<\/code>al suo posto viene usata la propriet\u00e0. La <code>length<\/code>propriet\u00e0 di una stringa recupera il conteggio totale dei caratteri.<\/p>\n<p>Per suddividere il testo in parole, utilizziamo <code>text.split(' ')<\/code>, che divide la stringa a ogni carattere di spazio, producendo un array di parole. La propriet\u00e0 length dell&#8217;array risultante fornisce il numero di parole.<\/p>\n<p>Tuttavia, potresti riscontrare un paio di problemi con questo codice:<\/p>\n<ol>\n<li>Non conter\u00e0 correttamente le singole parole su una riga senza caratteri di spazio circostanti.<\/li>\n<li>Se non \u00e8 presente alcun testo, verr\u00e0 segnalata in modo impreciso una singola parola a causa del modo in cui <code>split<\/code>funziona.<\/li>\n<\/ol>\n<p>Per risolvere il primo problema, considera di suddividere un&#8217;espressione regolare per tenere conto dei caratteri di spazio vuoto: <code>\\s<\/code>. Per risolvere il secondo problema, filtra tutte le stringhe vuote:<\/p>\n<p> <code><br \/>\n<span> words.innerHTML = text.split(\/\\s\/).filter(function(n) { return n! = ''; }).length;<\/span><br \/>\n<\/code><\/p>\n<figure class=\"wp-block-image\"><img alt=\"L'applicazione web con testo di esempio, che mostra il conteggio accurato dei caratteri e delle parole.\" class=\"wp-image\" decoding=\"async\" height=\"569\" loading=\"lazy\" src=\"https:\/\/cdn.howtogeek.blog\/wp-content\/uploads\/2025\/01\/web-app-final.webp\" title=\"L'applicazione web con testo di esempio, che mostra il conteggio accurato dei caratteri e delle parole.\" width=\"960\"\/><\/figure>\n<p>La creazione di utili applicazioni web pu\u00f2 essere realizzata con solo pochi file di base! \u00c8 possibile estendere questa semplice app per prendere appunti integrando funzionalit\u00e0 aggiuntive, come l&#8217;impiego della <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Window\/location\" target=\"_blank\">propriet\u00e0 window.location<\/a> per accedere agli URL o consentendo il salvataggio di pi\u00f9 note variando i nomi passati a <code>localStorage.setItem<\/code>.<\/p>\n<h3>Ulteriori approfondimenti<\/h3>\n<h4><strong>1. Quali sono i prerequisiti per questo tutorial sulla web app?<\/strong><\/h4>\n<p>Tutto ci\u00f2 di cui hai bisogno \u00e8 una conoscenza di base di HTML, CSS e JavaScript. Strumenti come un editor di testo (ad esempio, VSCode) e un browser web saranno utili.<\/p>\n<h4><strong>2. Posso modificare questa applicazione web per aggiungere altre funzionalit\u00e0?<\/strong><\/h4>\n<p>Assolutamente! Questo tutorial fornisce una base. Potresti aggiungere funzionalit\u00e0 come il salvataggio di pi\u00f9 note, la categorizzazione delle note o persino l&#8217;implementazione di una funzione di ricerca!<\/p>\n<h4><strong>3. Come funziona la Web Storage API?<\/strong><\/h4>\n<p>La Web Storage API consente alle applicazioni Web di archiviare dati nel browser. Archivia i dati in coppie chiave-valore che persistono anche dopo la chiusura del browser, rendendone facile il recupero in seguito.<\/p>\n<p><a class=\"xiaomi\" href=\"https:\/\/www.howtogeek.com\/build-your-first-web-app-a-simple-word-counter\/\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Fonte e immagini<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Iniziare il tuo viaggio di programmazione potrebbe sembrare scoraggiante in mezzo a una scelta schiacciante di linguaggi e framework. Potresti anche pensare di lasciare che un&#8217;IA gestisca tutto! Tuttavia, la programmazione per il web pu\u00f2 essere entusiasmante, accessibile e completamente gratuita! Cosa costruirai In questo tutorial creerai una semplice applicazione web progettata per memorizzare note [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[866,205,7],"class_list":["post-6681","post","type-post","status-publish","format-standard","hentry","category-how-to","tag-apps-web-apps","tag-programming","tag-windows"],"acf":[],"_links":{"self":[{"href":"https:\/\/howtogeek.blog\/it\/wp-json\/wp\/v2\/posts\/6681","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/howtogeek.blog\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/howtogeek.blog\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/howtogeek.blog\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/howtogeek.blog\/it\/wp-json\/wp\/v2\/comments?post=6681"}],"version-history":[{"count":1,"href":"https:\/\/howtogeek.blog\/it\/wp-json\/wp\/v2\/posts\/6681\/revisions"}],"predecessor-version":[{"id":6682,"href":"https:\/\/howtogeek.blog\/it\/wp-json\/wp\/v2\/posts\/6681\/revisions\/6682"}],"wp:attachment":[{"href":"https:\/\/howtogeek.blog\/it\/wp-json\/wp\/v2\/media?parent=6681"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/howtogeek.blog\/it\/wp-json\/wp\/v2\/categories?post=6681"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/howtogeek.blog\/it\/wp-json\/wp\/v2\/tags?post=6681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}