The Codest
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Industrie
    • Fintech e banche
    • E-commerce
    • Adtech
    • Tecnologia della salute
    • Produzione
    • Logistica
    • Automotive
    • IOT
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
Freccia indietro TORNA INDIETRO
2021-12-22
Sviluppo di software

Il confronto tra i campioni: Angular vs Vue

Oliwia Oremek

Attualmente esistono alcuni framework per frontend comunemente utilizzati e costantemente sviluppati dai loro creatori, ognuno leggermente diverso dall'altro. Eppure, potrebbero avere qualcosa in comune. Ecco un confronto basato sul processo di sviluppo: Angular di Google e Vue.js open-source:

Impostazione di un progetto

Il modo più veloce per dare il via a un progetto è l'utilizzo del CLI fornita dagli autori dei framework. Entrambi sono dotati di un servizio abbastanza buono; tuttavia, ci sono alcune differenze, ad esempio, Vue è dotato di un maggior numero di opzioni, per cui è possibile adattare un progetto alle proprie esigenze fin dall'inizio. Potete scegliere il Versione VueSe avete bisogno di usare routing. Typescript, preprocessori CSS o impostare un linter subito dopo. Inoltre, consente di decidere se si desidera impostare dei test (unitari o E2E).

Vue CLI

Angular è dotato di un generatore che consente di creare componenti, servizi, interfacce e direttive direttamente dalla console, il che, in base alla mia esperienza, è molto utile, in quanto non è necessario impostare manualmente cartelle, file e ridondanze. codice a mano, soprattutto quando si utilizza il modello MVC. Typescript viene fornito con Angular e vi spinge a usarlo. Se non l'avete ancora fatto, ecco un'utile introduzione sul perché dovreste provarlo: dateci un'occhiata. qui.

All'inizio, CLI dell'Angular chiede solo il routing o i preprocessori CSS preferiti che, rispetto a Vuenon lascia molto spazio per decidere la struttura e lo stile dell'applicazione. Ma se avete intenzione di seguire le convenzioni che vi chiede di usare, la CLI vi guiderà per tutto il percorso.

Angular CLI

Struttura del progetto

Vue utilizza SFC (Single File Components), il che rende abbastanza semplice per un nuovo sviluppatore iniziare a usare un framework e a orientarsi nel codice.

Direttive

Vue viene fornito con direttive come `v-if, v-for`, che è molto intuitivo da usare, essendo quasi una copia del programma Angular quelli. Vue utilizza la stessa convenzione per il binding bidirezionale dei dati (solo con il prefisso v- in `v-model`) e aggiungendo @/v-on, che indica che stiamo reagendo a qualcosa. Angular separa questo aspetto indicando la strada che stiamo percorrendo, usando le parentesi per il legame con gli eventi e le parentesi quadre per il legame con le proprietà, cioè `(change), [ngStyle], [(ngModel)]`.

In VueLa struttura è semplice, non c'è bisogno di creare file separati per i fogli di stile e la logica, quindi è tutto organizzato e accessibile. Naturalmente, Vue è dotato di una guida di stile in cui si possono trovare le regole consigliate da seguire quando si crea un progetto; tuttavia, ce ne sono solo alcune obbligatorie. 

Eventi

In questo caso, Vue viene riproposto con una soluzione più pratica; cioè, per emettere un evento dal componente figlio al suo genitore, tutto ciò che si deve fare è (utilizzando Vue 3 Composizione API ) prende un metodo dall'oggetto contesto nel setup ed emette semplicemente ciò che serve al momento:

setup(props, { emit }) { const componentMethodYouWantToUseSomewhere = () => { emit('customNameOfYourEvent', dataYouWantToPass); } }

È anche possibile farlo direttamente nel modello come risposta a un altro evento.

In Angularè necessario definire prima un EventEmitter come segue:

@Output() customNameForYourEmitter = new EventEmitter();

Quindi è necessario chiamare un metodo emit sull'EventEmitter:

this.customNameForYourEmitter.emit(this.theDataYouWantToPass);

Proiezione di slot/contenuti

In entrambi i framework, è possibile spostare facilmente il contenuto (singolo o multiplo) dal componente genitore al suo figlio, semplicemente aggiungendo html aggiuntivo all'interno dei tag figlio, con lievi differenze:

Vue:

``. 

Angular:

Predefinito:
    

Slot con nome:
<p yourname>
   Questo è uno slot con nome
  </p>
  <p>Si tratta di uno slot predefinito</p>

Tuttavia, se si desidera eseguire il rendering condizionato di alcune parti dell'applicazione, Vue è più intuitivo di Angular e consente di farlo più velocemente aggiungendo l'opzione v-if alla direttiva che consente di rendere solo le parti attualmente necessarie.




  

Mentre il ng-contenuto viene sempre reso, è necessario utilizzare in questo caso l'opzione ng-templatee successivamente creare una direttiva personalizzata:

<div *ngif="conditionToBeMet" [id]="contentId">
    <ng-container [ngtemplateoutlet]="content.templateRef"></ng-container>
</div>
@Direttiva({
  selettore: '[customDirectiveName]'
})
Esportare la classe CustomDirective {
  constructor(public templateRef: TemplateRef) {}
}

e per il nome che date al vostro ng-template l'Angular saprà cosa deve essere reso:

Inoltre, all'interno del componente, si vuole proiettare il modello da utilizzare nel file @ContentChild per ottenere il modello corretto:

@ContentChild(CustomDirective) content!: CustomDirective;

Servizio vs negozio

Angular nel suo nucleo incoraggia l'uso del modello di progettazione MVC, in cui è possibile utilizzare servizi per il modello. Per questo motivo, è necessario imparare il modello di iniezione delle dipendenze per gestire liberamente i dati nella propria applicazione. Consente di separare gli effetti collaterali delle chiamate API e di utilizzare la stessa logica nell'intero progetto, iniettando le parti necessarie al momento, il che lo rende un approccio modulare.

Angular viene fornito anche con il framework Ngrx/store, basato sul modello Redux, nel caso in cui si voglia utilizzare un approccio più reattivo con gli osservabili di RxJs. È dotato di Azioni, utilizzate per il dispacciamento di eventi unici da componenti e/o servizi, di Effetti, che gestiscono gli effetti collaterali o le azioni asincrone che si desidera eseguire, e di Riduttori, che mutano lo stato.

In VueL'approccio più diffuso è quello di utilizzare la libreria Vuex per la gestione degli stati, che è dotata di strumenti come Actions, Mutations e Getters, proprio come Ngrx/store, per aiutare a gestire e organizzare lo stato dell'applicazione. Si può modulare impostando diversi negozi per le viste, per esempio un negozio di utenti o un negozio di carrelli, ma questo può portare a problemi di spaziatura dei nomi, a meno che non si utilizzi l'opzione namespaced: true nella dichiarazione del negozio.

Ecco un confronto tra l'approccio basato sui servizi e quello dell'Vuex quando il compito è quello di recuperare alcune prodotto dati per il vostro negozio:

@Injectable() // decoratore per indicare che vogliamo usarlo in DI in un secondo momento
esportare la classe ProductsService {
  private products: Product[] = [];

  constructor(private backend: BackendService) { }

  getProducts() {
    this.backend.getAll(Product).then( (products: Product[]) => {
      //fai quello che vuoi con i tuoi prodotti
    });
    return this.products;
  }
}

Poi, nel componente, iniettiamo il nostro servizio da utilizzare:
constructor(private service: HeroService) { }

In Vue, si invia semplicemente un'azione che effettua una chiamata al backend per noi:

store.dispatch(getAllProducts)

e nel azioni.ts definiamo un'azione:

azioni: {
getAllProducts ({ commit }){
    commit('setProducts', await getProducts();); // recupera i dati e inserisce i risultati nell'archivio.
}}

Recupero dei dati

Con VueSi può usare Axios/Fetch o qualsiasi libreria si voglia usare, è davvero semplice: basta gestire le chiamate asincrone con le promesse o con l'approccio più adatto.

try {
http.get('https://url.to.get.data')
    .then(res => res.json())
    .then(data => console.log('fai quello che serve'))
} catch (e) {
    /gestisce l'errore
}

Angular viene fornito con la libreria HttpClient che utilizza gli osservabili, il che porta a un altro vantaggio: per usarlo correttamente e/o manipolare i dati, è necessario imparare RxJs. Anche in questo caso, può essere piuttosto complicato acquisire fluidità e familiarità con questo costrutto astratto all'inizio.

Si può usare Axios se è quello che si vuole fare, ma come dice la pagina GitHub di Axios: "Axios è fortemente ispirato dal servizio $http fornito in Angular'

private getAllItems(): void {
this.http
.get('https://url.to.fetch.data')

.pipe(
pluck('results'),
tap(console.log('fai qualsiasi effetto collaterale tu voglia usare qui')
catchError((errore) => {
        /gestisce l'errore
})
)
.subscribe((result: ResultType[])
    //operazione finale sull'output dato
)
}

Riassumendo

| Vue | Angular |
| ———– | ———– |
| Non spinge a seguire regole molto rigide | Richiede l'utilizzo di Typescript, di componenti/servizi basati su classi
| Curva di apprendimento piatta, facile da iniziare | Curva di apprendimento elevata (Typescript, RxJs, Dependency Injection) |
| Non c'è molto da configurare durante l'impostazione del progetto, ma consente di generare la struttura del progetto tramite la console.
| Quadro di riferimento comunitario basato sia su Angular che su React | Creato e mantenuto da Google |
| Non è incluso molto, è necessario installare librerie esterne| Gestione degli stati, HttpClient inclusi nel framework |

Per saperne di più:

L'JavaScript è completamente morto. Un tizio su Internet

Distribuire API GraphQL/MongoDB utilizzando le funzioni Netlify

Come uccidere un progetto con cattive pratiche di codifica

Articoli correlati

Sviluppo di software

Costruire applicazioni web a prova di futuro: le intuizioni del team di esperti di The Codest

Scoprite come The Codest eccelle nella creazione di applicazioni web scalabili e interattive con tecnologie all'avanguardia, offrendo esperienze utente senza soluzione di continuità su tutte le piattaforme. Scoprite come la nostra esperienza favorisce la trasformazione digitale e il business...

IL CANCRO
Sviluppo di software

Le 10 principali aziende di sviluppo software con sede in Lettonia

Scoprite le migliori aziende di sviluppo software della Lettonia e le loro soluzioni innovative nel nostro ultimo articolo. Scoprite come questi leader tecnologici possono aiutarvi a migliorare la vostra attività.

thecodest
Soluzioni per aziende e scaleup

Essenziali di sviluppo software Java: Guida all'outsourcing di successo

Esplorate questa guida essenziale sullo sviluppo di software Java con successo outsourcing per migliorare l'efficienza, accedere alle competenze e guidare il successo del progetto con The Codest.

thecodest
Sviluppo di software

La guida definitiva all'outsourcing in Polonia

L'aumento di outsourcing in Polonia è guidato dai progressi economici, educativi e tecnologici, che favoriscono la crescita dell'IT e un clima favorevole alle imprese.

IlCodesto
Soluzioni per aziende e scaleup

Guida completa agli strumenti e alle tecniche di audit IT

Gli audit IT garantiscono sistemi sicuri, efficienti e conformi. Per saperne di più sulla loro importanza, leggete l'articolo completo.

The Codest
Jakub Jakubowicz CTO e cofondatore

Iscrivetevi alla nostra knowledge base e rimanete aggiornati sulle competenze del settore IT.

    Chi siamo

    The Codest - Società internazionale di sviluppo software con centri tecnologici in Polonia.

    Regno Unito - Sede centrale

    • Ufficio 303B, 182-184 High Street North E6 2JA
      Londra, Inghilterra

    Polonia - Poli tecnologici locali

    • Parco uffici Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Ambasciata del cervello, Konstruktorska
      11, 02-673 Varsavia, Polonia

      The Codest

    • Casa
    • Chi siamo
    • Servizi
    • Case Studies
    • Sapere come
    • Carriera
    • Dizionario

      Servizi

    • Consulenza
    • Sviluppo di software
    • Sviluppo backend
    • Sviluppo Frontend
    • Staff Augmentation
    • Sviluppatori backend
    • Ingegneri del cloud
    • Ingegneri dei dati
    • Altro
    • Ingegneri QA

      Risorse

    • Fatti e miti sulla collaborazione con un partner esterno per lo sviluppo di software
    • Dagli Stati Uniti all'Europa: Perché le startup americane decidono di trasferirsi in Europa
    • Confronto tra gli hub di sviluppo Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filippine), Eurasia (Turchia)
    • Quali sono le principali sfide di CTO e CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condizioni di utilizzo del sito web

    Copyright © 2025 di The Codest. Tutti i diritti riservati.

    it_ITItalian
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek it_ITItalian