[![GitHub license](https://img.shields.io/github/license/microsoft/Web-Dev-For-Beginners.svg)](https://github.com/microsoft/Web-Dev-For-Beginners/blob/master/LICENSE)
[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/graphs/contributors/)
[![GitHub issues](https://img.shields.io/github/issues/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/issues/)
[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/pulls/)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)

[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Watch&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/watchers/)
[![GitHub forks](https://img.shields.io/github/forks/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Fork&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/network/)
[![GitHub stars](https://img.shields.io/github/stars/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Star&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/stargazers/)

[![Open in Visual Studio Code](https://img.shields.io/static/v1?logo=visualstudiocode&label=&message=Open%20in%20Visual%20Studio%20Code&labelColor=2c2c32&color=007acc&logoColor=007acc)](https://open.vscode.dev/microsoft/Web-Dev-For-Beginners)

# Sviluppo Web per Principianti - Un programma di lezioni

Gli Azure Cloud Advocates di Microsoft hanno il piacere di offrire un corso di 12 settimane, 24 lezioni riguardante le basi di JavaScript, CSS e HTML. Ogni lezione include dei quiz pre e post lezione, istruzioni scritte per completare la lezione, una soluzione, un esercizio ed altro. La nostra pedagogia basata su progetti ti consente di imparare mentre costruisci, un metodo collaudato per consolidare le nuove skill.

**Sentiti ringraziamenti ai nostri autori Jen Looper, Chris Noring, Christopher Harrison, Jasmine Greenaway, Yohan Lasorsa, Floor Drees, e all'artista sketchnote Tomomi Imura!**

# Sei uno studente?

Inizia con le seguenti risorse:

- [Pagina Student Hub](https://docs.microsoft.com/it-it/learn/student-hub?WT.mc_id=academic-13441-cxa) In questa pagina troverai risorse per principianti, pacchetti studente ed anche come ottenere voucher di certificazione gratuiti. Questa è la pagina da salvare tra i preferiti e controllare di tanto in tanto, ne aggiorniamo i contenuti con cadenza almeno mensile.
- [Microsoft Student Learn ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-13441-cxa) Unisciti alla community globale di student ambassadors, questa potrebbe essere la tua strada per entrare in Microsoft


# Per iniziare

> **Insegnanti**, abbiamo [inserito alcuni suggerimenti](/translations/for-teachers.it.md) su come utilizzare questo corso. Ci piacerebbe ricevere il tuo feedback [nel nostro forum di discussione](https://github.com/microsoft/Web-Dev-For-Beginners/discussions/categories/teacher-corner)!

> **[Studenti](https://aka.ms/student-page)**, per usare questo corso per conto vostro, effettuate una fork dell'intera repo e completate gli esercizi da soli iniziando con i quiz pre-lezione, proseguite poi con la lettura e completate il resto delle attività. Provate a creare i progetti comprendendo le lezioni piuttosto che copiando il codice soluzione; tuttavia, detto codice è disponibile nella cartella /solutions di ogni lezione comprendente un progetto. Un'altra idea potrebbe essere du creare un gruppo di studi con gli amici ed esplorare i contenuti insieme. Per scoprire di più, consigliamo [Microsoft Learn](https://docs.microsoft.com/users/jenlooper-2911/collections/jg2gax8pzd6o81?WT.mc_id=academic-13441-cxa) e la visione dei video menzionati sotto.

[![Promo video](/images/web.gif)](https://youtube.com/watch?v=R1wrdtmBSII)

Gif di [Mohit Jaisal](https://linkedin.com/in/mohitjaisal)

> 🎥 Clicca l'immagine sopra per un video riguardo al progetto e delle persone che lo hanno realizzato!

## Pedagogia

Abbiamo tenuto conto di due principi pedagogici nella realizzazione di questo corso: assicurarci che sia basato su dei progetti e che includa frequenti quiz. Alla fine di questa serie, gli studenti avranno costruito un tipico gioco, un terrario virtuale, una estensione del browser 'green', un gioco stile 'space invaders' e un'app business di banking, ed avranno appreso le basi di JavaScript, HTML e CSS insieme all'attuale toolchain degli sviluppatori web di oggi.

> 🎓 Puoi seguire le prime lezioni di questo corso come [Learn Path](https://docs.microsoft.com/learn/paths/web-development-101?WT.mc_id=academic-13441-cxa) su Microsoft Learn!

Assicurandoci che il contenuto sia allineato con i progetti, il processo viene reso più coinvolgente per gli studenti e la memorizzazione dei concetti sarà migliorata. Abbiamo inoltre scritto diverse lezioni introduttive sulle basi di JavaScript per introdurre dei concetti, accompagnate da video dalla collezione di video tutorial "[Serie per Principianti a: JavaScript](https://channel9.msdn.com/Series/Beginners-Series-to-JavaScript?WT.mc_id=academic-13441-cxa)", della quale alcuni autori hanno contribuito a questo progetto.

Inoltre un quiz a bassa difficoltà prima di una lezione fissa nello studente l'intenzione di apprendere un argomento, mentre un secondo quiz dopo la lezione garantisce un'ulteriore conservazione delle nozioni apprese. Questo corso è stato progettato per essere flessibile e divertente e può essere seguito per intero o solo in parte. Il progetto parte in piccolo per poi diventare progressivamente più complesso verso la fine del ciclo di 12 settimane.

Anche se abbiamo volutamente evitato di introdurre i frameworks JavaScript per concentrarci sulle skill di base richieste ad un web developer prima di adottare un framework, un buon prossimo passo per completare questo corso sarebbe scoprire di più riguardo a  Node.js tramite un'altra collezione di video: "[Serie per Principianti a: Node.js](https://channel9.msdn.com/Series/Beginners-Series-to-Nodejs?WT.mc_id=academic-13441-cxa)".

> Guarda il nostro [Codice di Condotta](CODE_OF_CONDUCT.md) e le linee guida su [Contributi](CONTRIBUTING.md) e [Traduzioni](TRANSLATIONS.md). I tuoi feedback costruttivi sono i benvenuti!

## Ogni lezione include:

- sketchnote opzionale
- video supplementare opzionale
- quiz di riscaldamento pre-lezione
- lezione scritta
- per le lezioni basate su progetti, guida passo-passo su come costruire il progetto
- check delle competenze
- una sfida
- letture aggiuntive
- compiti
- quiz post-lezione

> **Una nota riguardo ai quiz**: Tutti i quiz sono contenuti [in questa app](https://ashy-river-0debb7803.1.azurestaticapps.net/), per un totale di 48 quiz da 3 domande ciascuno. Sono raggiungibili dall'interno delle lezioni ma possono anche essere eseguiti in locale; segui le istruzioni contenute nella cartella `quiz-app`. Questi sono progressivamente in via di traduzione.

## Lezioni

|     |                       Nome Progetto                       |                            Concetti Insegnati                             | Obiettivi di Apprendimento                                                                                                                 |                                                         Link alla Lezione                                                          |         Autore          |
| :-: | :------------------------------------------------------: | :--------------------------------------------------------------------: | ----------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------: | :---------------------: |
| 01  |                     Per Iniziare                      |           Introduzione alla programmazione e agli strumenti del mestiere           | Scopri le fondamenta della maggior parte dei linguaggi di programmazione e sul software che aiuta gli sviluppatori professionisti a svolgere il proprio lavoro | [Introduzione alla programmazione e agli strumenti del mestiere](/1-getting-started-lessons/1-intro-to-programming-languages/translations/README.it.md) |         Jasmine         |
| 02  |                     Per Iniziare                      |             Basi di GitHub, include lavorare in team             | Come usare GitHub nel tuo progetto, come collaborare con altri sul codice                                                    |                            [Introduzione a GitHub](/1-getting-started-lessons/2-github-basics/translations/README.it.md)                             |          Floor          |
| 03  |                     Per Iniziare                      |                             Accessibilità                              | Impara le basi dell'accessibilità web                                                                                               |                       [Fondamenta di Accessibilità](/1-getting-started-lessons/3-accessibility/translations/README.it.md)                       |       Christopher       |
| 04  |                        Basi di JS                         |                         JavaScript Data Types                          | Le basi dei data types di JavaScript                                                                                               |                                       [Data Types](/2-js-basics/1-data-types/translations/README.it.md)                                        |         Jasmine         |
| 05  |                        Basi di JS                         |                         Funzioni e Metodi                          | Informazioni su funzioni e metodi per gestire il flusso logico di un'applicazione                                                             |                              [Funzioni e Metodi](/2-js-basics/2-functions-methods/translations/README.it.md)                               | Jasmine and Christopher |
| 06  |                        Basi di JS                         |                        Prendere decisioni con JS                        | Scopri come creare condizioni nel tuo codice utilizzando il processo decisionale                                                           |                                 [Prendere Decisioni](/2-js-basics/3-making-decisions/translations/README.it.md)                                  |         Jasmine         |
| 07  |                        Basi di JS                         |                            Arrays e Loops                            | Lavorare con i dati usando gli arrays ed i loops in JavaScript                                                                                 |                                   [Arrays e Loops](/2-js-basics/4-arrays-loops/translations/README.it.md)                                    |         Jasmine         |
| 08  |       [Terrario](/3-terrarium/solution/README.md)       |                            HTML in Pratica                            | Costruisci l'HTML per creare un terrario online, concentrandoti sulla creazione di un layout                                                         |                                 [Introduzione all'HTML](/3-terrarium/1-intro-to-html/translations/README.it.md)                                 |           Jen           |
| 09  |       [Terrario](/3-terrarium/solution/README.md)       |                            CSS in Pratica                             | Costruisci il CSS per dare uno stile al terrario online, concentrandoti sulle basi del CSS incluso come rendere la pagina reattiva                     |                                  [Introduzione al CSS](/3-terrarium/2-intro-to-css/translations/README.it.md)                                  |           Jen           |
| 10  |            [Terrario](/3-terrarium/solution/README.md)            |                 JavaScript Closures, DOM manipulation                 | Costruisci il JavaScript per far funzionare il terrario come un'interfaccia drag/drop, concentrandoti sulle closures e sulla DOM manipulation             |                  [JavaScript Closures, DOM manipulation](/3-terrarium/3-intro-to-DOM-and-closures/translations/README.it.md)                   |           Jen           |
| 11  |          [Gioco di Battitura](/4-typing-game/solution/README.md)          |                          Costruisci un Gioco di Battitura                           | Scopri come utilizzare gli eventi della tastiera per guidare la logica della tua app JavaScript                                                          |                                [Programmazione guidata dagli eventi](/4-typing-game/typing-game/translations/README.it.md)                                |       Christopher       |
| 12  | [Estensione Browser Green](/5-browser-extension/solution/translation/README.it.md) |                         Lavorare con i Browser                          | Scopri come funzionano i browser, la loro storia e come impostare i primi elementi di un'estensione del browser                               |                               [Riguardo ai Browsers](/5-browser-extension/1-about-browsers/translations/README.it.md)                                |           Jen           |
| 13  | [Estensione Browser Green](/5-browser-extension/solution/translation/README.it.md) | Creazione di un modulo, chiamata API e archiviazione di variabili nella memoria locale | Crea gli elementi JavaScript della tua estensione browser per chiamare un'API utilizzando le variabili archiviate nella memoria locale                      |                [APIs, Forms, e Memoria Locale](/5-browser-extension/2-forms-browsers-local-storage/translations/README.it.md)                 |           Jen           |
| 14  | [Estensione Browser Green](/5-browser-extension/solution/translation/README.it.md) |          Processi in background nel browser, performance web          | Utilizzare i processi in background del browser per gestire l'icona dell'estensione; scopri di più sulle prestazioni web e alcune ottimizzazioni da apportare   |             [Processi in Background e Performance](/5-browser-extension/3-background-tasks-and-performance/translations/README.it.md)              |           Jen           |
| 15  |           [Gioco Spaziale](/6-space-game/solution/README.md)           |             Sviluppo di giochi più avanzati con JavaScript             | Scopri l'ereditarietà utilizzando sia Classi che Composizione e il modello Pub/Sub, in preparazione alla creazione di un gioco              |                      [Introduzione allo Sviluppo di Giochi Avanzato](/6-space-game/1-introduction/translations/README.it.md)                       |          Chris          |
| 16  |           [Gioco Spaziale](/6-space-game/solution/README.md)           |                           Disegnare su canvas                            | Ulteriori informazioni sull'API Canvas, utilizzata per disegnare elementi su uno schermo                                                                       |                                [Disegnare su Canvas](/6-space-game/2-drawing-to-canvas/translations/README.it.md)                                |          Chris          |
| 17  |           [Gioco Spaziale](/6-space-game/solution/README.md)           |                   Muovere elementi sullo schermo                    | Scopri come gli elementi possono muoversi utilizzando le coordinate cartesiane e l'API Canvas                                           |                           [Muovere elementi](/6-space-game/3-moving-elements-around/translations/README.it.md)                           |          Chris          |
| 18  |           [Gioco Spaziale](/6-space-game/solution/README.md)           |                          Rilevamento delle collisioni                           | Far scontrare e reagire tra loro gli element premendo i tasti e fornendo una funzione di cooldown per garantire le prestazioni del gioco    |                              [Rilevamento delle collisioni](/6-space-game/4-collision-detection/translations/README.it.md)                              |          Chris          |
| 19  |           [Gioco Spaziale](/6-space-game/solution/README.md)           |                             Tenere il Punteggio                              | Esegui calcoli matematici in base allo stato e alle prestazioni del gioco                                                                |                                    [Tenere il Punteggio](/6-space-game/5-keeping-score/translations/README.it.md)                                    |          Chris          |
| 20  |           [Gioco Spaziale](/6-space-game/solution/README.md)           |                     Terminare e riavviare il gioco                    | Scopri come terminare e riavviare il gioco, inclusa la pulizia degli asset e il ripristino dei valori delle variabili                              |                                [Le Condizioni di Termine](/6-space-game/6-end-condition/translations/README.it.md)                                 |          Chris          |
| 21  |         [App Bancaria](/7-bank-project/solution/translations/README.it.md)          |                 Modelli e rotte HTML in un'app Web                 | Scopri come creare le basi dell'architettura di un sito Web multipagina utilizzando routing e templates HTML                             |                            [Templates HTML e Rotte](/7-bank-project/1-template-route/translations/README.it.md)                             |          Yohan          |
| 22  |         [App Bancaria](/7-bank-project/solution/translations/README.it.md)          |                  Costruire un Form di Login e Registrazione                   | Linformazioni sulla creazione di moduli e sulla gestione delle routine di convalida                                                                          |                                           [Forms](/7-bank-project/2-forms/translations/README.it.md)                                           |          Yohan          |
| 23  |         [App Bancaria](/7-bank-project/solution/translations/README.it.md)          |                   Metodi di recupero e utilizzo dei dati                   | Come i dati entrano e escono dalla tua app, come recuperarli, archiviarli ed eliminarli                                                 |                                            [Dati](/7-bank-project/3-data/translations/README.it.md)                                            |          Yohan          |
| 24  |         [App Bancaria](/7-bank-project/solution/README.md)          |                      Concetti di Gestione dello Stato                      | Scopri come la tua app mantiene lo stato e come gestirla programmaticamente                                                          |                                [Gestione dello Stato](/7-bank-project/4-state-management/translations/README.it.md)                                |          Yohan          |

## Accesso offline

Puoi utilizzare questa documentazione offline utilizzando [Docsify](https://docsify.js.org/#/). Esegui un fork di questa repo, [installa Docsify](https://docsify.js.org/#/quickstart) sul tuo dispositivo locale e successivamente nella cartella radice (root) di questa repo esegui `docsify serve`. Il sito web girerà sulla porta 3000 del tuo localhost: `localhost:3000`.

## PDF

Puoi trovare un PDF con tutte le lezioni [qui](https://microsoft.github.io/Web-Dev-For-Beginners/pdf/readme.pdf).

## Altri corsi

Il nostro team produce altri corsi! Dai uno sguardo:

- [Machine Learning per Principianti](https://aka.ms/ml-beginners)
- [IoT per Principianti](https://aka.ms/iot-beginners)
- [Data Science per Principianti](https://aka.ms/datascience-beginners)
- [AI per Principianti](https://aka.ms/ai-beginners)
