Note JavaScript - Università degli Studi di Milano
Introduzione a JavaScript
Applicazioni web
Risorse in rete identificabili tramite URL: Le risorse web sono accessibili attraverso indirizzi unici che permettono agli utenti di trovarle e interagire con esse.
Pagina statica: Un contenuto fisso è rappresentato da una pagina HTML che non cambia in base all'interazione dell'utente; per esempio,
http://www.example.com/biblioteca.htmlè un collegamento a una pagina statica.Pagina dinamica: Si tratta di una pagina il cui contenuto viene generato in tempo reale, in risposta a richieste particolari; un esempio è
http://www.example.com/biblioteca.php, dove il contenuto potrebbe variare a seconda dell'input dell'utente.Applicazione web: Software che viene eseguito tramite tecnologie web e che può interagire con il server per raccogliere e presentare dati; utilizza:
Linguaggi di mark-up: per definire la struttura del contenuto (es. HTML per la struttura e CSS per lo stile).
Linguaggi di scripting: per aggiungere interattività (es. JavaScript, PHP).
Tecnologie client-side e server-side: gestiscono rispettivamente l'elaborazione nel browser dell'utente e sul server.
Linguaggi di Programmazione e Scripting
Tipologie di linguaggi:
Mark-up: Stabilisce la struttura e la presentazione del contenuto (es. HTML, CSS integrato per la richiesta di stile).
Programmazione: Comprende linguaggi come Java e C# che consentono di scrivere sequenze di istruzioni dettagliate per l'elaborazione dei dati (linguaggi “ad alto livello”).
Scripting: Consiste nella scrittura di piccoli programmi o script per automatizzare compiti (es. PHP, JavaScript).
Specifiche Linguaggi di Programmazione
Alfabeto: Insieme di simboli utilizzati per costruire termini e comandi nel linguaggio (lessico).
Sintassi: Le regole grammaticali che determinano come i termini devono essere combinati per formare istruzioni valide.
Semantica: Rappresenta il significato delle frasi ben formate nel linguaggio di programmazione; ad esempio, un'istruzione può avere una sintassi corretta ma una semantica sbagliata.
Analizzatore Sintattico (Parser): Software che verifica se le frasi nel codice sorgente sono conformi alle regole di sintassi del linguaggio, separando e organizzando i vari componenti del codice.
Approcci alla Traduzione dei Programmi
Compilazione: Processo che comporta la traduzione diretta del codice sorgente in linguaggio macchina, producendo un file eseguibile.
Interpretazione: Processo che implica la lettura e l'esecuzione del codice sorgente riga per riga, ideale per lo sviluppo rapido e il debug.
Approccio misto: Combina compilazione e interpretazione, dove il codice sorgente è trasformato in bytecode, poi interpretato da una macchina virtuale.
Pagine Web Dinamiche
Tecnologie:
Client-side: Linguaggi come JavaScript e Java Applet consentono l'elaborazione direttamente nel browser dell'utente, permettendo un'interazione più fluida e rapida; utile per dare risposte immediate.
Server-side: Linguaggi come PHP, JSP e ASP che elaborano richieste sul server, utile per la generazione di contenuti dinamici basati su input utente o database.
Struttura delle Applicazioni Web
Tre livelli logici per lo sviluppo web:
Presentazione: Comprende HTML e CSS, utilizzati per strutturare e stilizzare l'aspetto delle pagine web. La presentazione è fondamentale per l'esperienza utente.
Intermedio: Tecnologie come JavaServlet e PHP gestiscono la logica applicativa, elaborando le richieste e le interazioni degli utenti.
Dati: Comprende l'uso di sistemi di gestione di basi di dati relazionali (RDBMS), nonché formati di dati come XML e JSON per lo scambio di informazioni.
Differenze tra Tecnologie Client-side e Server-side
Client-side: Non richiede un server per il caricamento e l'esecuzione di pagine che si aggiornano in modo limitato; l'elaborazione avviene nel browser, il che riduce il carico sul server.
Server-side: Necessita di un server per la generazione di pagine che sono autenticamente dinamiche, permettendo l'accesso a dati in tempo reale e la manipolazione di informazioni nel back-end.
Introduzione a JavaScript
Linguaggio di scripting principale usato sul lato client, diverso da Java non solo nel nome ma anche nei paradigmi e nelle applicazioni.
Esecuzione: Non richiede una fase di compilazione; tipicamente, il codice JavaScript viene interpretato direttamente dal browser, consentendo tempi di sviluppo più rapidi e una minore complessità nei cicli di aggiornamento del codice.
Storia di JavaScript
Originariamente creato con il nome LiveScript, è stato rinominato JavaScript nel 1995 da Netscape per sfruttare la popolarità di Java. Da allora, è diventato uno standard per la programmazione web.
Standard attuale: ECMAScript 262, che definisce la struttura, le funzionalità e le regole di utilizzo del linguaggio.
Elementi Fondamentali di JavaScript
Case-sensitive: Il linguaggio distingue tra maiuscole e minuscole; ad esempio, "ciao" non è equivalente a "Ciao".
Due concetti principali:
DOM (Document Object Model): Rappresenta gli oggetti e le strutture dei documenti in modo da poter interagire e manipolare facilmente i componenti della pagina web.
Eventi: JavaScript è un linguaggio impulsato da eventi, formando risposte interattive agli input degli utenti (ad es.: suClick, suLoad).
Tipi e Variabili in JavaScript
Debolmente tipato: Il tipo di variabile è determinato automaticamente al primo assegnamento, permettendo flessibilità ma richiedendo attenzione da parte dello sviluppatore per evitare errori di tipo.
Tipi principali:
Number: Alloca spazi per interi e decimali, facilitando operazioni numeriche; per esempio, valori come 7 o 7.7.
Boolean: Rappresenta stati logici, Vero o Falso, essenziali per il controllo delle condizioni.
String: Sequenze di caratteri racchiuse tra virgolette, utilizzate per gestire testi e messaggi.
Dichiarazioni delle Variabili
Non sempre è necessaria la keyword
var, essendo questa in alcuni contesti nativa nelle moderne versioni di JavaScript; le dichiarazioni locali devono invece usarevarper garantire la visibilità delle variabili.È considerata una buona norma inizializzare le variabili prima del loro utilizzo, per migliorare la leggibilità e prevenire errori.
Costanti e Commenti
Costanti devono essere dichiarate appositamente; possono essere di tipo number oppure boolean e, una volta assegnato un valore, non possono più essere modificate.
Commenti nel codice: Utilizzare
//per i commenti su singola riga; per più righe è preferibile/* */, pratico per documentare e chiarire il codice senza influenzarne l'esecuzione.
Operatori in JavaScript
Operatori Aritmetici: Utilizzati per eseguire operazioni matematiche, includendo + (somma), - (differenza), * (moltiplicazione), / (divisione), ++ (incremento), -- (decremento).
Operatori di confronto: Usati per confrontare variabili, come == (uguaglianza), != (diversità), > (maggiore), < (minore), >= (maggiore uguale), <= (minore uguale).
Operatori Booleani: Incorporano logique, utilizzando && (AND), || (OR) per combinare condizioni e determinare l'output.
Istruzioni e Espressioni
Le istruzioni possono essere singole o combinate per formare logiche più complesse; è essenziale sapere definire e utilizzare correttamente le condizioni booleane, che possono implicare variabili, operatori di confronto e logici.
Funzioni in JavaScript
Le funzioni sono definite tramite la parola chiave
functione possono essere passate come parametri ad altre funzioni, potenziando la modularità e la riutilizzabilità del codice.Esempi di definizione di funzione: Consentono di restituire valori, come nel caso di
function sum(a,b){ return a+b; }che calcola la somma di due numeri.
Costruzione di Oggetti e Metodi
Gli oggetti sono creati attraverso costruttori e rappresentano istanze di entità; i metodi sono funzioni associate a questi oggetti e definiscono il comportamento degli stessi.
Eventi in JavaScript
La gestione degli eventi permette l'interazione dell'utente con l'applicazione; gli esempi di gestori includono eventi come onClick per rispondere a clic dell'utente o onLoad per eseguire codice quando una pagina è completamente caricata.
Conclusioni
JavaScript è un linguaggio versatile e multicompito con supporto per scripting, manipolazione del DOM e gestione di eventi, essenziale per la creazione di esperienze web moderne e interattive, e parte integrante di qualsiasi sviluppatore web.