API

API

Le API (Application Programming Interface) rappresentano un pilastro fondamentale nell’ecosistema delle tecnologie moderne. Esse definiscono le regole e i protocolli attraverso i quali le applicazioni software possono interagire tra loro e con altri sistemi, consentendo la comunicazione e lo scambio di dati in modo efficace e standardizzato.

Tipi di API

Esistono diversi tipi di API, ma le più comuni sono le API web. Tra queste, le API RESTful hanno guadagnato una notevole popolarità grazie alla loro semplicità e flessibilità. Infatti rappresentano un modo per consentire a diversi sistemi di comunicare tra loro tramite Internet.

Immaginaìiamo di essere in un ristorante e di ordinare il cibo attraverso un menu. Avremo a disposizione:

  1. Risorse: Ogni voce nel menu rappresenta una risorsa. Ad esempio, “Pizza Margherita” potrebbe essere una risorsa.
  2. URI: Ogni risorsa ha un identificatore univoco, chiamato URI (Uniform Resource Identifier). Nel nostro caso, l’URI per la “Pizza Margherita” potrebbe essere “/menu/pizza-margherita”.
  3. Metodi HTTP: I metodi HTTP, come GET, POST, PUT e DELETE, corrispondono a diverse azioni che si possono eseguire su una risorsa. Ad esempio:
    • GET: Ottieni informazioni sulla “Pizza Margherita”.
    • POST: Aggiungi una nuova pizza al menu.
    • PUT: Aggiorna le informazioni sulla “Pizza Margherita” nel menu.
    • DELETE: Rimuovi la “Pizza Margherita” dal menu.
  4. Rappresentazioni: Le informazioni su una risorsa sono trasmesse attraverso rappresentazioni, come ad esempio JSON o XML. Ad esempio, se richiediamo informazioni sulla “Pizza Margherita”, si riceve una rappresentazione di quella pizza, che potrebbe essere un oggetto JSON con il nome, gli ingredienti e il prezzo.

Quindi ad esempio una richiesta del tipo

  • GET /menu/pizza-margherita: si ottengono informazioni sulla “Pizza Margherita”.

Restituirebbe le informazioni sulla “Pizza Margherita” come una rappresentazione di dati, ad esempio in formato JSON:

{
  "name": "Pizza Margherita",
  "description": "La classica pizza italiana con mozzarella, pomodoro e basilico fresco.",
  "ingredients": [
    {
      "name": "mozzarella",
      "quantity": "100g"
    },
    {
      "name": "pomodoro",
      "quantity": "100g"
    },
    {
      "name": "basilico",
      "quantity": "a piacere"
    }
  ],
  "price": 8.99,
  "available_sizes": ["Piccola", "Media", "Grande"],
  "calories_per_serving": 250,
  "allergens": ["Glutine", "Lattosio"],
  "image_url": "https://example.com/pizza_margherita.jpg"
}

Dunque, seguendo il paradigma architetturale REST (Representational State Transfer), le API RESTful utilizzano metodi HTTP standard come GET, POST, PUT e DELETE per accedere e manipolare le risorse su Internet. Queste risorse sono generalmente identificate da URL (Uniform Resource Locator) e possono includere dati, funzionalità o servizi offerti da un’applicazione o da un sistema.

Altri tipi di API includono le API SOAP, basate sul protocollo SOAP (Simple Object Access Protocol), e le API GraphQL, che offrono una maggiore flessibilità nella definizione delle query e nella manipolazione dei dati.

Corso su JavaScript

Campi di applicazione delle API

Le API svolgono un ruolo cruciale in una vasta gamma di contesti. Nei siti web, ad esempio, consentono l’integrazione di funzionalità di terze parti come i pagamenti online, i social media, le mappe e molto altro ancora. Nelle applicazioni mobili, le API abilitano l’accesso a servizi online, consentendo la sincronizzazione dei dati e l’interazione in tempo reale. Inoltre, le API sono fondamentali per l’integrazione di sistemi software diversi, facilitando la comunicazione e lo scambio di informazioni tra applicazioni e dispositivi IoT (Internet of Things).

Oltre alla loro utilità pratica, le API hanno un impatto significativo sull’innovazione e lo sviluppo tecnologico. Fornendo un modo standardizzato per accedere e utilizzare le funzionalità e i servizi offerti da un’applicazione o da un sistema, le API consentono agli sviluppatori di concentrarsi sulla creazione di nuove soluzioni e applicazioni senza dover reinventare la ruota ogni volta. Ciò promuove la collaborazione e la condivisione delle risorse, accelerando il processo di sviluppo e consentendo l’emergere di ecosistemi digitali sempre più interconnessi e dinamici.

API gratuite online

Ecco un elenco di alcune API free facilmente utilizzabili per i tuoi progetti, come da post su Instagram:

Questi sono solo alcuni esempi di API gratuite disponibili online. inoltre, molte hanno limiti di utilizzo o richiedono la registrazione per ottenere una chiave API, quindi è sempre importante leggere attentamente la documentazione fornita dall’autore dell’API prima di utilizzarla.

Conclusioni

In conclusione, le API rappresentano una componente essenziale dell’infrastruttura tecnologica moderna, facilitando la comunicazione e lo scambio di dati tra applicazioni, sistemi e dispositivi. La loro ubiquità e flessibilità le rendono uno strumento indispensabile per l’innovazione e lo sviluppo continuo delle tecnologie digitali.

Alcuni link utili

Tutorial JavaScript

Versione rivisitata del gioco dell’impiccato: divertiti ad indovinare le parole ed impara a sviluppare uno dei giochi più famosi.

Slot Machine: segui una guida passo passo per imparare a svilupparne una semplicissima slot machine da zero.

Quiz interattivo: un quiz che permette di testare le conoscenze su determinati argomenti.

Memoria del colore: una sfida divertente che mette alla prova la memoria visiva e la capacità di ricordare sequenze di colori sempre più complesse.

Memory Game: Un’avvincente sfida di concentrazione e memoria!

Lifecycle hook beforeUpdate

Lifecycle hook beforeUpdate

Il lifecycle hook beforeUpdate in Vue.js viene chiamato prima che l’istanza di Vue aggiorni il DOM e renda nuovamente il componente. Questo hook è utile quando è necessario eseguire determinati compiti o calcoli prima dell’aggiornamento del componente.

Quando utilizzare il lifecycle hook beforeUpdate?

L’hook beforeUpdate in Vue.js è utile quando si desidera eseguire operazioni o calcoli prima che il componente venga aggiornato e il DOM venga ridisegnato con i nuovi dati. Ecco alcune situazioni nelle quali si potrebbe utilizzare:

  1. Validazione dei dati: Prima che i dati vengano applicati al DOM, è possibile eseguire la validazione su di essi per assicurarsi che siano corretti. Ad esempio, si potrebbe voler verificare se un campo di input è compilato correttamente prima di consentire all’utente di inviare i dati.
  2. Manipolazione dei dati: Si possono eseguire operazioni di manipolazione sui dati prima che vengano applicati al DOM. Questo può includere la formattazione dei dati in un formato specifico, il calcolo di valori derivati o la conversione dei dati in un formato più adatto per la visualizzazione.
  3. Ottimizzazione delle prestazioni: Se si hanno operazioni costose in termini di tempo da eseguire prima dell’aggiornamento del componente, evitando di eseguirle durante altri momenti del ciclo di vita del componente.
  4. Gestione delle animazioni: Se si stanno usando animazioni o transizioni nel componente, si possono calcolare le posizioni iniziali e finali degli elementi prima che vengano aggiornati nel DOM.
  5. Pulizia delle risorse: Si può eseguire la pulizia delle risorse o la gestione delle sottoscrizioni prima dell’aggiornamento del componente, ad esempio cancellando eventuali sottoscrizioni a eventi o liberando risorse utilizzate temporaneamente.
libro javascript

lifecycle hook beforeUpdate in Vue.js – esempio

Facciamo un esempio di come potremmo utilizzare l’hook beforeUpdate per eseguire la validazione dei dati prima dell’aggiornamento del componente.

In questo esempio, supponiamo di avere un campo di input dove inserire il nome utente ed un campo di input dove inserire un’email. Prima di inviare i dati vogliamo assicurarci che siano in un formato corretto.

Ecco come potremmo sviluppare l’esempio:

<template>
  <div>
    <input type="text" v-model="username">
    <input type="email" v-model="email">
    <button @click="submitForm" :disabled="!isValidForm">Invia</button>
    <p v-if="!isValidForm" style="color: red;">Per favore inserisci dati validi.</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      username: '',
      email: '',
      isValidForm: false
    };
  },
  methods: {
    validateUsername(username) {
      // Esegui la validazione del nome utente
      return username.length >= 3; // Ad esempio, controlla se la lunghezza è maggiore o uguale a 3
    },
    validateEmail(email) {
      // Esegui la validazione dell'email
      const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
      return emailRegex.test(email);
    },
    submitForm() {
      // Esegui azioni di invio solo se il form è valido
      if (this.isValidForm) {
        console.log('Dati validi, invio in corso...');
        // Esegui azioni di invio
      } else {
        console.log('Alcuni dati non sono validi, impossibile inviare i dati.');
        // Mostra un messaggio di errore
        // Non è necessario mostrare un messaggio specifico in console
      }
    }
  },
  beforeUpdate() {
    // Esegui la validazione dei dati prima dell'aggiornamento
    const usernameValid = this.validateUsername(this.username);
    const emailValid = this.validateEmail(this.email);
    
    // Aggiorna lo stato di isValidForm in base alla validità dei dati
    this.isValidForm = usernameValid && emailValid;
  }
};
</script>

Dunque abbiamo utilizzato l’hook beforeUpdate per garantire che il nome utente e l’email vengano validati nuovamente prima dell’aggiornamento del componente, in modo che anche se l’utente ha modificato l’email, verrà eseguita la validazione prima che i nuovi dati vengano applicati al DOM.

In pratica l’utente interagisce con l’input e modifica i dati (nome utente e/o email). Poi ogni volta che i dati vengono modificati, Vue esegue il rendering del componente, ma prima di effettuare l’aggiornamento, chiama il metodo beforeUpdate. All’interno di beforeUpdate, viene eseguita la validazione dei dati. Se la validazione è ok, l’utente può premere il pulsante “Invia” per inviare il modulo. Viene dunque chiamato il metodo submitForm, che esegue ulteriori controlli sui dati e invia il modulo se tutti i dati sono validi.

Conclusioni

In questa lezione abbiamo parlato del lifecycle hook beforeUpdate che viene chiamato prima che avvenga l’aggiornamento del componente in Vue.js. Questo hook è utile ad empio per eseguire operazioni o controlli prima che i dati vengano applicati al DOM durante l’aggiornamento del componente.

Nelle prossime lezioni vederemo altri lifecycle hook di Vue.js e svolgeremo numerosi esempi.

Alcuni link utili

Tutorial JavaScript

Versione rivisitata del gioco dell’impiccato: divertiti ad indovinare le parole ed impara a sviluppare uno dei giochi più famosi.

Slot Machine: segui una guida passo passo per imparare a svilupparne una semplicissima slot machine da zero.

Quiz interattivo: un quiz che permette di testare le conoscenze su determinati argomenti.

Memoria del colore: una sfida divertente che mette alla prova la memoria visiva e la capacità di ricordare sequenze di colori sempre più complesse.

Memory Game: Un’avvincente sfida di concentrazione e memoria!

Creare Componenti Vue con le Rotte

In questa lezione vedremo come creare componenti Vue per le rotte utilizzando Vue Router.

Scopo di questa lezione è quello di creare un piccolo sito web di esempio per capire come visualizzare le varie pagine personalizzate con contenuto e titolo.

Iniziamo con la creazione di alcuni componenti: HeaderComponent e FooterComponent.

Creare Componenti Vue con le Rotte – HeaderComponent

Partiamo dall’HeaderComponent. In questo componente ho utilizzato il componente <router-link> fornito da Vue Router per navigare tra le diverse pagine dell’applicazione.

Il componente <router-link> è un componente fornito da Vue Router che consente di creare link tra le diverse rotte dell’applicazione. È simile all’elemento <a> in HTML, ma offre funzionalità aggiuntive specifiche per la gestione delle rotte.

Poi ho inserito l’attributo to che definisce la rotta alla quale il link deve puntare. Può essere una stringa contenente il percorso della rotta o un oggetto di opzioni di navigazione. Inoltre ho aggiunto l’attributo exact che viene utilizzato quando si desidera che il link sia attivo solo quando la rotta corrente corrisponde esattamente al percorso specificato nell’attributo to. Ad esempio, exact è utilizzato nel link per la homepage (<router-link to="/" exact>) per assicurarsi che il link sia attivo solo quando la rotta corrente è esattamente /.

Corso su JavaScript

Infine ho inserito l’attributo active-class che specifica la classe CSS da applicare al link quando la sua rotta è attiva. In questo caso, quando un link è attivo, viene applicata la classe CSS active, che definisce uno stile visivo per evidenziare il link attivo, ad esempio rendendolo sottolineato.

<template>
    <header>
      <nav>
        <ul>
          <li>
            <router-link to="/" exact active-class="active">Home</router-link>
          </li>
          <li>
            <router-link to="/about" active-class="active">About</router-link>
          </li>
          <li>
            <router-link to="/services" active-class="active">Services</router-link>
          </li>
        </ul>
      </nav>
    </header>
  </template>
  
  <script>
  export default {
    name: 'Header'
  }
  </script>
  
  <style scoped>
  /* Stili specifici per Header */
  ul {
    list-style: none;
    padding: 0;
  }
  
  ul li {
    display: inline;
    margin-right: 20px;
  }
  
  ul li a {
    text-decoration: none;
    color: #333;
  }
  
  .active {
     text-decoration: underline;

  }
  </style>
  

Quindi, utilizzando <router-link>, è possibile creare facilmente link tra le diverse rotte dell’applicazione Vue.js, definendo il percorso di destinazione con l’attributo to e specificando eventuali opzioni aggiuntive come exact e active-class.

Creare Componenti Vue con le Rotte – FooterComponent

Creiamo anche il footer component dove inseriamo semplicemente il copyrigth:

<template>
    <footer>
      <p>© 2024 - Nome Azienda</p>
    </footer>
  </template>
  
  <script>
  export default {
    name: 'FooterComponent'
  }
  </script>
  
  <style scoped>
  /* Stili specifici per il Footer */
  footer {
    background-color: #f0f0f0;
    padding: 20px;
    text-align: center;
  }
  </style>
  

Creare Componenti Vue con le Rotte – Creiamo le pagine

Creiamo adesso la cartella views dentro components e realizziamo tre pagine. Home, About e Services.

Iniziamo dalla pagina HomeView dove inseriamo del semplice contenuto personalizzato riguardante l’homepage:

<template>
    <div>
        <h1>Home Page</h1>
        <p>Benvenuti sul nostro sito web!</p>
    </div>
</template>

<script>
export default {
}
</script>

Creiamo poi la pagina AboutView dove inseriamo anche in questo caso del semplice contenuto:

<template>
    <div>
        <h1>About Us</h1>
        <p>Pagina della nostra storia</p>
    </div>
</template>

<script>

export default {
    name: 'AboutView',
}
</script>

Ed infine realizziamo la pagina ServiceComponent:

<template>
    <div>
      <h1>Services</h1>
      <p>Qui ci sono i nostri servizi.</p>
    </div>
  </template>
  
  <script>
  export default {
    
  }
  </script>
  

Creare Componenti Vue con le Rotte – router.js

Creiamo il file router.js dove innanzitutto impotiamo i moduli necessari da Vue Router e definiamo le viste. In questo passaggio, vengono importati i moduli createRouter e createWebHistory da Vue Router, insieme alle viste (componenti) HomeView, AboutView, e ServiceView.

Dopo definiamo le rotte della nostra applicazione. Ogni rotta è rappresentata da un oggetto che specifica il percorso (path), il nome (name) e il componente Vue associato (component). La proprietà meta viene utilizzata per definire i metadati aggiuntivi, come il titolo della pagina.

Poi creiamo la costante router utilizzando la funzione createRouter di Vue Router., dove specifichiamo anche l’utilizzo di createWebHistory() per la gestione dello storico di navigazione.

Infine definiamo una guardia di navigazione globale utilizzando il metodo beforeEach. Questa guardia viene eseguita prima di ogni navigazione e aggiorna il titolo del documento in base ai metadati specificati per la rotta corrente. In particolare:

  1. (to, from, next) => { ... }: è una funzione che accetta tre argomenti:
    • to: Rappresenta l’oggetto Route della rotta verso cui l’utente sta navigando.
    • from: Rappresenta l’oggetto Route della rotta da cui l’utente sta navigando.
    • next: È una funzione che deve essere chiamata per indicare al router di proseguire con la navigazione.
  2. document.title = to.meta.title || 'Il Tuo Sito';: Questa riga imposta il titolo del documento HTML in base alla proprietà meta.title della rotta verso cui l’utente sta navigando. Se la proprietà meta.title non è definita per la rotta, viene utilizzato il titolo predefinito 'Il Tuo Sito'.
  3. next();: Questa chiamata alla funzione next() indica al router di procedere con la navigazione. Senza questa chiamata, la navigazione si bloccherebbe e l’utente non sarebbe in grado di raggiungere la rotta desiderata.

Ecco il codice del file router.js:

import { createRouter, createWebHistory } from 'vue-router';
import HomeView from './views/HomeView.vue';
import AboutView from './views/AboutView.vue';
import ServiceView from './views/ServiceView.vue';

const routes = [
  {
    path: '/',
    name: 'Home',
    component: HomeView,
    meta: { title: 'Home - Il Mio Sito Web' }
  },
  {
    path: '/about',
    name: 'About',
    component: AboutView,
    meta: { title: 'About - La mia Storia' }
  },
  {
    path: '/services',
    name: 'Services',
    component: ServiceView,
    meta: { title: 'I Miei Servizi' }
  }
];

const router = createRouter({
  history: createWebHistory(),
  routes
});

router.beforeEach((to, from, next) => {
  document.title = to.meta.title || 'Il Tuo Sito';
  next();
});

export default router;

main.js

Importiamo il router nel file main.js:

import { createApp } from 'vue'; // Importa la funzione createApp da Vue 3
import App from './App.vue';
import router from './router';

const app = createApp(App); // Crea un'istanza dell'applicazione utilizzando la funzione createApp
app.use(router); // Usa il router

app.mount('#app'); // Monta l'applicazione nell'elemento con id "app" nel DOM

Infine lavoriamo su App.vue

<template>
  <div>
    <HeaderComponent />
    <router-view></router-view>
    <FooterComponent />
  </div>
</template>

<script>
import HeaderComponent from './components/HeaderComponent.vue';
import FooterComponent from './components/FooterComponent.vue';

export default {
  components: {
    HeaderComponent,
    FooterComponent
  },
}
</script>

<style>
.active {
  text-decoration: none;
}
</style>

Conclusioni

In questa lezione abbiamo visto come creare Componenti Vue con le Rotte e a personalizzare anche il titolo di ciascuna pagina. Nelle prossime lezioni realizzeremo altre applicazioni utilizzando le rotte in Vue JS.

Alcuni link utili

Tutorial JavaScript

Componenti Vue.js

Option API

Composition API

Counter in Vue.js (con le due sintassi: Option API e Composition API)

Direttiva v-model

props con Option API

Installare Vue Router

Installare Vue Router

In questa lezione vedremo come installare Vue Router nei nostri progetti. Per l’installazione di Vue Router analizzeremo in dettaglio i passaggi da seguire per poterlo utilizzare nei nostri progetti.

Innanzitutto assicuriamoci di avere un progetto Vue già creato. Se non si ha ancora un progetto, si può crearlo utilizzando Vue CLI o un altro metodo di nostra preferenza.

Una volta pronto, ci spostiamo nella directory del progetto

cd nome_progetto

e installiamo Vue Router tramite npm o yarn:

npm install vue-router

Creiamo i componenti per le rotte

Creiamo una cartella di nome views dentro src per contenere le viste che creeremo.

È una regola comune creare una cartella chiamata views all’interno di un progetto Vue.js per contenere i componenti che rappresentano le diverse viste o pagine dell’applicazione. Questa pratica aiuta a organizzare il codice in modo chiaro e separare le diverse parti dell’applicazione in modo che sia più facile da gestire e mantenere. All’interno della cartella views, è possibile creare sottocartelle per raggruppare ulteriormente i componenti in base alle funzionalità o alla struttura dell’applicazione. Ad esempio, si potrebbe avere una sottocartella auth per i componenti relativi all’autenticazione e una sottocartella dashboard per i componenti della dashboard dell’applicazione.

Dunque creiamo le due pagine di base per il nostro progetto di esempio. Dapprima creiamo la pagina home, dove per il momento inseriamo solo un titolo ed una semplice frase. Ecco un possibile esempio:

<!-- HomeView.vue -->

<template>
  <div>
    <h1>Home Page</h1>
    <p>Welcome to our awesome app!</p>
  </div>
</template>

<script>
export default {
  // Logica del componente
}
</script>

E poi creiamo la pagina About, anche in questa inseriamo un titolo ed una semplice frase:

<!-- AboutView.vue -->

<template>
  <div>
    <h1>About Us</h1>
    <p>Learn more about our team and mission.</p>
  </div>
</template>

<script>
export default {
  // Logica del componente
}
</script>


Quindi utilizziamo le rotte definite all’interno del nostro file di configurazione di Vue Router all’interno del nostro template dell’App Vue:

<!-- App.vue -->

<template>
  <div id="app">
    <router-link to="/">Home</router-link>
    <router-link to="/about">About</router-link>
    <router-view></router-view>
  </div>
</template>

<script>
export default {
  // Logica del componente
}
</script>

Corso su JavaScript

Installazione di Vue Router – Configurazione

Ora che Vue Router è installato, possiamo configurarlo all’interno della tua applicazione. Creiamo un nuovo file di configurazione per Vue Router, ad esempio router.js, e definiamo le rotte:

// router.js

import { createRouter, createWebHistory } from 'vue-router'; 
// Importa le funzioni createRouter e createWebHistory da Vue Router
import HomeView from './views/HomeView.vue';
import AboutView from './views/AboutView.vue';

const routes = [
  {
    path: '/',
    name: 'home',
    component: HomeView
  },
  {
    path: '/about',
    name: 'about',
    component: AboutView
  }
];

const router = createRouter({
  history: createWebHistory(),
  routes
});

export default router;

Spieghiamo in dettaglio il funzionamento del file router.js:

  1. Importazione delle funzioni di routing: Nella prima riga, stiamo importando due funzioni essenziali da Vue Router: createRouter e createWebHistory. Queste funzioni ci consentono di creare un’istanza del router Vue e specificare il tipo di history mode da utilizzare.
    In particolare utilizziamo createWebHistory per l’history mode basato su HTML5 ovvero per gestire la navigazione dell’applicazione tramite la storia del browser, consentendo di modificare l’URL senza ricaricare la pagina. Il metodo createWebHistory() crea un’istanza di history mode HTML5, che consente di utilizzare percorsi di navigazione puliti senza hash (#) negli URL dell’applicazione. Se stiamo utilizzando invece il fallback mode (simile all’hash mode) o se si sta eseguendo l’applicazione Vue in un ambiente che non supporta il history mode HTML5, si può utilizzare createWebHashHistory()che crea un’istanza di fallback mode che include hash negli URL dell’applicazione (http://example.com/#/about).
  2. Definizione delle rotte: Definiamo un array routes che contiene oggetti che rappresentano le rotte dell’applicazione. Ogni oggetto di rotta ha tre proprietà principali:
    • path: Il percorso dell’URL corrispondente alla rotta.
    • name: Il nome univoco della rotta.
    • component: Il componente Vue associato alla rotta.
  3. Creazione dell’istanza del router: Utilizzando la funzione createRouter, passiamo un oggetto di configurazione che include l’istanza di history creata con createWebHistory e l’array delle rotte definite.
  4. Esportazione del router: Esportiamo l’istanza del router in modo che possa essere utilizzata nell’intera applicazione.

Installazione di Vue Router – Integrazione nell’App Vue

Adesso occorre integrare Vue Router all’interno della nostra applicazione Vue. Apriamo il file principale della nostra app, di solito main.js, e importiamo e utilizziamo Vue Router:

import { createApp } from 'vue'; // Importa la funzione createApp da Vue 3
import App from './App.vue';
import router from './router';

const app = createApp(App); 
// Crea un'istanza dell'applicazione utilizzando la funzione createApp
app.use(router); // Usa il router

app.mount('#app'); 
// Monta l'applicazione nell'elemento con id "app" nel DOM

Testate il progetto di esempio e personalizzatelo a vostro piacimento.

Conclusioni

In questa lezione abbiamo visto come installare ed utilizzare di Vue Router nei nostri progetti. Vue Router è uno strumento potente per gestire le rotte all’interno delle applicazioni Vue.js, consentendo la creazione di applicazioni a pagina singola (SPA) e la navigazione tra diverse viste in modo fluido e intuitivo. La sua semplice configurazione e flessibilità lo rendono una scelta popolare tra gli sviluppatori Vue.js. Con Vue Router, è possibile definire e gestire le rotte in modo chiaro e organizzato, migliorando l’esperienza dell’utente e la manutenibilità del codice. Installare Vue Router è semplice e veloce grazie ad npm, e una volta configurato, offre una solida base per la creazione di applicazioni web moderne e dinamiche.

Nelle prossime lezioni studieremo altre caratteristiche di Vue Router.

Alcuni link utili

Tutorial JavaScript

Componenti Vue.js

Option API

Composition API

Counter in Vue.js (con le due sintassi: Option API e Composition API)

Direttiva v-model

props con Option API

Introduzione a Vue Router

Introduzione a Vue Router

In questa lezione faremo una breve introduzione a Vue Router per capire perchè è conveniente utilizzarlo nei nostri progetti,

Definizione

Vue Router è una libreria ufficiale per la gestione delle rotte nelle applicazioni Vue.js. Quindi, consente di definire le diverse “rotte” all’interno delle nostre applicazioni Vue.js e dunque permette di gestire la navigazione tra di esse in modo efficace e reattivo.

Con Vue Router, è possibile definire le rotte per le diverse pagine o viste della nostra applicazione e configurare il routing in modo che l’URL dell’applicazione cambi in base alla pagina visualizzata. Ciò significa che si possono creare applicazioni Vue.js con più pagine o viste e consentire agli utenti di navigare tra di esse tramite URL.

Vue Router offre anche funzionalità avanzate come il nesting delle rotte (ovvero la capacità di definire rotte annidate all’interno di altre rotte), i parametri dinamici, i parametri di query e i redirect, consentendo di gestire scenari di routing più complessi in modo semplice e intuitivo.

Inoltre, Vue Router si integra perfettamente con l’ecosistema di Vue.js e offre un’esperienza di sviluppo coerente e piacevole per la creazione di applicazioni web moderne e dinamiche.

Introduzione a Vue Router – Concetti chiave

Dunque alcuni concetti chiave di Vue Router sono:

  1. Routing: Vue Router è una libreria che gestisce il routing all’interno delle applicazioni Vue.js. Consente di definire diverse rotte e associare ciascuna rotta a un componente Vue specifico.
  2. Routes: Le rotte definiscono il mapping tra i percorsi URL e i componenti Vue corrispondenti. Ogni rotta è costituita da un percorso (path) e un componente associato.
  3. Nested Routes: Vue Router supporta il nesting delle rotte, consentendo di definire rotte figlie all’interno di rotte principali. Questo permette di organizzare le rotte in una struttura gerarchica.
  4. Route Matching: Il routing in Vue Router è basato sulla corrispondenza delle URL. Quando l’URL del browser corrisponde a una rotta definita, il router caricherà il componente associato.
  5. Dynamic Routes: Le rotte dinamiche in Vue Router consentono di definire percorsi con parametri dinamici, che possono essere utilizzati per identificare risorse specifiche o passare dati tra le viste.
  6. Navigation Guards: Vue Router offre i navigation guards, che consentono di eseguire operazioni personalizzate prima, durante o dopo la navigazione tra le rotte. Questo include beforeRouteEnter, beforeEach, beforeRouteLeave, etc.
  7. Programmatic Navigation: È possibile navigare tra le rotte in modo programmatico utilizzando i metodi del router, ad esempio router.push(), router.replace(), router.go(), ecc.
  8. Named Routes: Le rotte possono essere denominate, consentendo di riferirsi ad esse utilizzando nomi simbolici anziché percorsi URL espliciti. Ciò rende il codice più leggibile e manutenibile.
  9. Route Params: I parametri delle rotte consentono di catturare parti dinamiche degli URL e passarli ai componenti Vue come props o utilizzarli per recuperare dati specifici dal backend.
  10. Route Meta Fields: Vue Router supporta i meta campi delle rotte, che consentono di associare metadati aggiuntivi a ogni rotta. Questi metadati possono essere utilizzati per scopi come l’autenticazione, l’autorizzazione o il controllo dell’accesso.

Utilizzando questi concetti, Vue Router offre una gestione potente e flessibile del routing all’interno delle applicazioni Vue.js, consentendo di creare un’esperienza di navigazione fluida e dinamica per gli utenti.

Corso su JavaScript

Conclusioni

In questa breve lezione sull’introduzione a Vue Router abbiamo potuto apprezzare che è uno strumento potente per gestire il routing nelle nostre applicazioni Vue.js, consentendo una navigazione fluida e reattiva tra le diverse pagine o viste dell’applicazione. Nelle prossime lezioni procederemo all’installazione di Vue Router per poterlo utilizzare nei nostri progetti e vederne appieno tutte le potenzialità.

Alcuni link utili

Tutorial JavaScript

Componenti Vue.js

Option API

Composition API

Counter in Vue.js (con le due sintassi: Option API e Composition API)

Direttiva v-model

props con Option API

Lifecycle hook mounted

Lifecycle hook mounted

In questa lezione parleremo del lifecycle hook mounted di Vue.js. Questo lifecycle hook è chiamato dopo che un componente è stato montato nel DOM ed è utile quando occorre eseguire operazioni che richiedono l’accesso al DOM o quando si vuole interagire con altri componenti già montati.

Quando utilizzare il lifecycle hook mounted?

Analizziamo alcune situazioni comuni in cui mounted può essere utilizzato:

Manipolazione del DOM: Dato che mounted è chiamato dopo che il componente è stato inserito nel DOM, è il momento ideale per eseguire operazioni che coinvolgono la manipolazione del DOM, come aggiungere eventi o modificare gli attributi degli elementi HTML.

Recupero dei dati: Spesso, è necessario recuperare dati da un’API o da un backend dopo che il componente è stato montato. Utilizzando mounted, è possibile eseguire chiamate API e aggiornare lo stato del componente con i dati ottenuti.

Interazione con altri componenti: Se il componente deve interagire con altri componenti già montati, mounted è il momento giusto per farlo. È possibile accedere ai metodi e ai dati degli altri componenti e stabilire le connessioni necessarie.

Lifecycle hook mounted di Vue.js – esempio

Facciamo un semplice esempio di utilizzo di mounted. Utilizziamo questo hook per stampare un messaggio di log dopo che il componente è stato montato nel DOM e per cambiare il colore del titolo del componente.

Se facciamo la prova ad utilizzare created o beforeCreate avremo un messaggio di errore, perchè entrambi sono eseguiti prima che il componente venga montato nel DOM, quindi al momento della loro esecuzione non si ha accesso al DOM stesso o agli elementi presenti al suo interno. Se si cerca di manipolare il DOM o interagire con elementi del DOM in questi hook, si otterrà un errore poiché il DOM non è ancora stato creato.

Questo dimostra come mounted sia un ottimo punto per interagire con il DOM e aggiungere funzionalità al componente dopo che è stato renderizzato.

Di seguito ecco un esempio di un componente che fa uso di Lifecycle hook mounted di Vue.js:

<template>
    <div>
      <h1>{{ message }}</h1>
    </div>
  </template>
  
  <script>
  export default {
    data() {
      return {
        message: 'Ciao da Coding Creativo!' // Messaggio di esempio
      };
    },
    mounted() {
      // Eseguiamo operazioni dopo che il componente è stato montato nel DOM
      console.log('Il componente è stato montato nel DOM.');
      // Esempio di manipolazione del DOM
      document.querySelector('h1').style.color = 'orange';
    }
  };
  </script>
  

Corso su JavaScript

Conclusioni

In questo articolo abbiamo parlato del lifecycle hook mounted di Vue.js. Ricordiamo dunque che mounted è utilizzando come momento ideale per interagire con il DOM e gli altri componenti, mentre created e beforeCreate sono utilizzati principalmente per l’inizializzazione dei dati e la configurazione del componente stesso.

Chiaramente il corretto utilizzo dei lifecycle hooks in Vue.js è fondamentale per garantire il corretto funzionamento e la gestione efficiente dei componenti. Comprendere il momento esatto in cui vengono eseguiti questi hooks e quali operazioni sono appropriate in ciascuno di essi è essenziale per sviluppare applicazioni Vue.js stabili e performanti.

Sia mounted, created, beforeCreate e gli altri lifecycle hook forniscono una potente flessibilità per gestire il ciclo di vita dei componenti in Vue.js, consentendo loro di scrivere codice pulito, organizzato e facilmente manutenibile. La padronanza di questi concetti è dunque cruciale per costruire applicazioni Vue.js di successo, in grado di fornire un’esperienza utente ottimale e scalabile! Seguitemi per altri tutorial sull’argomento, nella prossima lezione parleremo di beforeUpdate.

Alcuni link utili

Tutorial JavaScript

Componenti Vue.js

Option API

Composition API

Counter in Vue.js (con le due sintassi: Option API e Composition API)

Direttiva v-model

props con Option API