window.pipedriveLeadboosterConfig = { basis: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versie: 2, } ;(functie () { var w = venster als (w.LeadBooster) { console.warn('LeadBooster bestaat al') } anders { w.LeadBooster = { q: [], on: functie (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: functie (n) { this.q.push({ t: 't', n: n }) }, } } })() De vergelijking van de kampioenen: Angular vs Vue - The Codest
The Codest
  • Over ons
  • Diensten
    • Software Ontwikkeling
      • Frontend ontwikkeling
      • Backend ontwikkeling
    • Staff Augmentation
      • Frontend ontwikkelaars
      • Backend ontwikkelaars
      • Gegevensingenieurs
      • Cloud Ingenieurs
      • QA ingenieurs
      • Andere
    • Het advies
      • Audit & Consulting
  • Industrie
    • Fintech & Bankieren
    • E-commerce
    • Adtech
    • Gezondheidstechnologie
    • Productie
    • Logistiek
    • Automotive
    • IOT
  • Waarde voor
    • CEO
    • CTO
    • Leveringsmanager
  • Ons team
  • Case Studies
  • Weten hoe
    • Blog
    • Ontmoetingen
    • Webinars
    • Bronnen
Carrière Neem contact op
  • Over ons
  • Diensten
    • Software Ontwikkeling
      • Frontend ontwikkeling
      • Backend ontwikkeling
    • Staff Augmentation
      • Frontend ontwikkelaars
      • Backend ontwikkelaars
      • Gegevensingenieurs
      • Cloud Ingenieurs
      • QA ingenieurs
      • Andere
    • Het advies
      • Audit & Consulting
  • Waarde voor
    • CEO
    • CTO
    • Leveringsmanager
  • Ons team
  • Case Studies
  • Weten hoe
    • Blog
    • Ontmoetingen
    • Webinars
    • Bronnen
Carrière Neem contact op
Pijl terug KEREN TERUG
2021-12-22
Software Ontwikkeling

De vergelijking van de kampioenen: Angular vs Vue

Oliwia Oremek

Op dit moment zijn er een paar frontend frameworks die veel gebruikt worden en constant doorontwikkeld worden door hun makers, elk een beetje anders dan de andere. En toch kunnen ze iets gemeen hebben. Hier is een vergelijking gebaseerd op het ontwikkelingsproces - Google's Angular vs. open-source Vue.js:

Een project opzetten

De snelste manier om een project is door gebruik te maken van de CLI geleverd door de auteurs van de frameworks. Beide hebben een vrij goede service, maar er zijn een paar verschillen, namelijk, Vue wordt geleverd met meer opties, zodat je een project vanaf het begin kunt afstemmen op je behoeften. Je kunt kiezen voor de Versie VueOf je nu routing moet gebruiken. Typescript, CSS preprocessors of een linter instellen. Je kunt ook beslissen of je tests wilt opzetten (unit of E2E).

Vue CLI

Angular wordt geleverd met een generator waarmee je componenten, services, interfaces en directives direct vanuit de console kunt maken. Mijn ervaring is dat dit erg handig is, omdat het niet nodig is om handmatig mappen, bestanden en overbodige code met de hand, vooral als je bijvoorbeeld het MVC-patroon gebruikt. Typescript wordt standaard geleverd met Angular en zet je als het ware onder druk om het te gebruiken. Als je het nog niet hebt gedaan, is hier een handige introductie waarom je het zou moeten proberen - je kunt het bekijken hier.

Aan het begin, Angular's CLI vraagt je alleen naar routing of voorkeurs CSS preprocessors die, in vergelijking met Vuelaat je niet veel ruimte om te beslissen over de structuur en stijl van je applicatie. Maar als je de conventie volgt die het je vraagt te gebruiken, dan zal de CLI je de hele weg leiden.

Angular CLI

Projectstructuur

Vue maakt gebruik van SFC (Single File Components), wat het voor een nieuwe ontwikkelaar vrij eenvoudig maakt om een framework te gebruiken en zijn weg te vinden in de code.

Richtlijnen

Vue komt ook uit de doos met directieven zoals `v-if, v-for`, wat erg intuïtief is om te gebruiken omdat het bijna een kopie is van de Angular degenen. Vue gebruikt dezelfde conventie voor bidirectionele gegevensbinding (alleen door het voorvoegsel te zetten met, bijvoorbeeld, v- in `v-model`) en het toevoegen van de @/v-on om aan te geven dat we ergens op reageren. Angular scheidt dit door aan te geven welke kant we op gaan door haakjes te gebruiken voor binding aan gebeurtenissen en vierkante haakjes voor binding aan eigenschappen, dus `(verandering), [ngStyle], [(ngModel)]`.

In VueDe structuur zelf is eenvoudig, het is niet nodig om aparte bestanden te maken voor stylesheets en logica, dus het is allemaal overzichtelijk en toegankelijk. Natuurlijk, Vue wordt geleverd met een stijlgids waarin je aanbevolen regels kunt vinden om te volgen bij het maken van een project; er zijn er echter maar een paar die verplicht zijn. 

Evenementen

In dit geval, Vue komt weer met een handigere oplossing; namelijk, om een gebeurtenis van het kind-onderdeel naar zijn ouder te sturen is alles wat je hoeft te doen (met behulp van Vue 3 Samenstelling API ) een methode nemen van het contextobject in de setup en gewoon uitzenden wat je op dat moment nodig hebt:

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

Je kunt het ook direct in de sjabloon doen als reactie op een andere gebeurtenis.

In Angularmoet je eerst als volgt een EventEmitter definiëren:

@Output() customNameForYourEmitter = nieuwe EventEmitter();

Dan moet je een emit method aanroepen op de EventEmitter:

this.customNameForYourEmitter.emit(this.theDataYouWantToPass);

Slots/inhoud projectie

In beide frameworks kun je de inhoud (zowel enkelvoudige als meervoudige) gemakkelijk verplaatsen van het ouder component naar het kind door gewoon extra html toe te voegen binnen de child tags, met kleine verschillen:

Vue:

`` 

Angular:

Standaard:
    

Naam sleuf:
    .
<p yourname>
   Dit is een slot met naam
  </p>
  <p>Dit is een standaard sleuf</p>

Als je echter bepaalde delen van je applicatie voorwaardelijk wilt renderen, Vue is intuïtiever dan Angular en laat je het sneller doen door de v-if richtlijn naar uw tag, waarmee je alleen de delen kunt renderen die op dat moment nodig zijn.




  

Terwijl de ng-content altijd wordt weergegeven, moet je in dit geval de ng-sjabloonen maak later je eigen aangepaste richtlijn:

<div *ngif="conditionToBeMet" [id]="contentId">
    <ng-container [ngtemplateoutlet]="content.templateRef"></ng-container>
</div>
@Directive({
  selector: '[customDirectiveName]'
})
export klasse CustomDirective {
  constructor(public templateRef: TemplateRef) {}
}

en vanwege de naam die je aan je ng-sjabloon attribuut, zal Angular weten wat moet worden weergegeven:

Ook wil je binnen de component je sjabloon projecteren om te gebruiken in de @InhoudKind om de juiste sjabloon te krijgen:

@ContentChild(CustomDirective) content!: CustomDirective;

Service vs winkel

Angular moedigt je in de kern aan om het MVC-ontwerppatroon te gebruiken, waarbij je services voor het model kunt gebruiken. Daarom moet je het patroon voor het injecteren van afhankelijkheden leren om gegevens vrij te kunnen gebruiken in je applicatie. Hiermee kun je de neveneffecten van je API-aanroepen scheiden en dezelfde logica in het hele project gebruiken door de onderdelen die je op dat moment nodig hebt te injecteren, waardoor het ook een modulaire aanpak is.

Angular wordt ook geleverd met het Ngrx/store framework gebaseerd op het Redux patroon voor het geval je een meer reactieve aanpak wilt gebruiken met RxJs observables. Het wordt geleverd met Actions die worden gebruikt voor het dispatchen van unieke gebeurtenissen van componenten en/of services, Effects die neveneffecten afhandelen of async acties die je wilt uitvoeren en Reducers die je state muteren.

In VueDe populaire benadering is om de Vuex bibliotheek te gebruiken voor statusbeheer, die ook tools bevat zoals Actions, Mutations en Getters, net als Ngrx/store, om je te helpen bij het beheren en organiseren van de status van je applicatie. Je kunt het moduleren door verschillende stores in te stellen voor je views, bijvoorbeeld een user store of een cart store, maar dit kan leiden tot problemen met naamspaties, tenzij je de naamgebonden: waar eigenschap in je winkeldeclaratie.

Hier is een vergelijking van de op services gebaseerde benadering en die van de Vuex wanneer de taak is om een aantal product gegevens voor je winkel:

@Injectable() // decorator om aan te geven dat we het later in DI willen gebruiken
exportklasse ProductsService {
  private producten: Product[] = [];

  constructor(private backend: BackendService) { }

  getProducts() {
    this.backend.getAll(Product).then( (Producten: Product[]) => {
      //doe wat je wilt met je producten
    });
    return this.products;
  }
}

Vervolgens injecteren we in de component onze service die moet worden gebruikt:
constructor(private service: HeroService) { }

In Vueverzenden we eenvoudig een actie die een backend-oproep voor ons doet:

winkel.dispatch(getAlleProducten)

en in de acties.ts bestand definiëren we een actie:

acties: {
getAllProducts ({ commit }){
    commit('setProducts', await getProducts();); // gegevens ophalen en de resultaten in de winkel zetten
}}

Gegevens ophalen

Met VueJe kunt Axios/Fetch of welke bibliotheek dan ook gebruiken, het is echt eenvoudig - je handelt asynchrone oproepen gewoon af met beloften of welke aanpak dan ook die het beste bij je past.

probeer {
http.get('https://url.to.get.data')
    .then(res => res.json())
    .then(data => console.log('doe wat nodig is'))
} vangst (e) {
    //fout afhandelen
}

Angular wordt geleverd met de HttpClient bibliotheek die observables gebruikt, wat leidt tot een ander voordeel - om het goed te gebruiken en/of gegevens te manipuleren, moet je RxJs leren. Nogmaals, het kan behoorlijk overweldigend zijn om vloeiend te worden en vertrouwd te raken met deze abstracte constructie in het prille begin.

Je kunt Axios gebruiken als dat is wat je wilt doen, maar zoals de Axios GitHub pagina zegt: 'Axios is sterk geïnspireerd door de $http service geleverd in Angular'

privé getAllItems(): leeg {
this.http
.get('https://url.to.fetch.data')

.pipe(
pluck('resultaten'),
tap(console.log('doe hier wat voor neveneffect je wilt gebruiken')
catchError((error) => {
        //fout afhandelen
})
)
.subscribe((resultaat: ResultType[])
    /eindbewerking op gegeven uitvoer
)
}

Samenvattend

| Vue | Angular |
| ———– | ———– |
| Vereist het gebruik van Typescript, op klassen gebaseerde componenten/services.
| Vlakke leercurve, gemakkelijk om mee te beginnen Hoge leercurve (Typescript, RxJs, Dependency Injection)
| Er zijn veel dingen te configureren tijdens het opzetten van een project. Er is niet veel in te stellen, maar je kunt wel een projectstructuur genereren via de console.
| Community-gedreven framework gebaseerd op zowel Angular als React | Gemaakt en onderhouden door Google |
| Er is niet veel inbegrepen, u moet externe bibliotheken installeren. State management, HttpClient inbegrepen in het framework.

Lees meer:

JavaScript is helemaal dood. Een kerel op het internet

GraphQL/MongoDB API implementeren met Netlify-functies

Hoe een project om zeep helpen met slechte codeerpraktijken

Verwante artikelen

Software Ontwikkeling

Bouw Toekomstbestendige Web Apps: Inzichten van The Codest's Expert Team

Ontdek hoe The Codest uitblinkt in het creëren van schaalbare, interactieve webapplicaties met geavanceerde technologieën, het leveren van naadloze gebruikerservaringen op alle platforms. Ontdek hoe onze expertise digitale transformatie en business...

DE BESTE
Software Ontwikkeling

Top 10 in Letland gevestigde bedrijven voor softwareontwikkeling

Lees meer over de beste softwareontwikkelingsbedrijven van Letland en hun innovatieve oplossingen in ons nieuwste artikel. Ontdek hoe deze technologieleiders uw bedrijf kunnen helpen verbeteren.

thecodest
Oplossingen voor ondernemingen en schaalvergroting

Essentiële Java-softwareontwikkeling: Een gids voor succesvol uitbesteden

Verken deze essentiële gids over succesvolle outsourcing Java-softwareontwikkeling om de efficiëntie te verbeteren, toegang te krijgen tot expertise en projectsucces te stimuleren met The Codest.

thecodest
Software Ontwikkeling

De ultieme gids voor outsourcing in Polen

De sterke groei van outsourcing in Polen wordt gedreven door economische, educatieve en technologische vooruitgang, die IT-groei en een bedrijfsvriendelijk klimaat stimuleert.

DeCodest
Oplossingen voor ondernemingen en schaalvergroting

De complete gids voor IT-auditmiddelen en -technieken

IT-audits zorgen voor veilige, efficiënte en compliant systemen. Lees het volledige artikel om meer te weten te komen over het belang ervan.

The Codest
Jakub Jakubowicz CTO & medeoprichter

Abonneer je op onze kennisbank en blijf op de hoogte van de expertise uit de IT-sector.

    Over ons

    The Codest - Internationaal softwareontwikkelingsbedrijf met technische hubs in Polen.

    Verenigd Koninkrijk - Hoofdkantoor

    • Kantoor 303B, 182-184 High Street North E6 2JA
      Londen, Engeland

    Polen - Lokale technologieknooppunten

    • Fabryczna kantorenpark, Aleja
      Pokoju 18, 31-564 Krakau
    • Hersenambassade, Konstruktorska
      11, 02-673 Warschau, Polen

      The Codest

    • Home
    • Over ons
    • Diensten
    • Case Studies
    • Weten hoe
    • Carrière
    • Woordenboek

      Diensten

    • Het advies
    • Software Ontwikkeling
    • Backend ontwikkeling
    • Frontend ontwikkeling
    • Staff Augmentation
    • Backend ontwikkelaars
    • Cloud Ingenieurs
    • Gegevensingenieurs
    • Andere
    • QA ingenieurs

      Bronnen

    • Feiten en fabels over samenwerken met een externe partner voor softwareontwikkeling
    • Van de VS naar Europa: Waarom Amerikaanse startups besluiten naar Europa te verhuizen
    • Tech Offshore Ontwikkelingshubs Vergelijking: Tech Offshore Europa (Polen), ASEAN (Filippijnen), Eurazië (Turkije)
    • Wat zijn de grootste uitdagingen voor CTO's en CIO's?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Gebruiksvoorwaarden website

    Copyright © 2025 door The Codest. Alle rechten voorbehouden.

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