Veel bedrijven streven er tegenwoordig naar om in korte tijd een hoogwaardige webapplicatie te ontwikkelen. Er zijn veel JavaScript frameworks waaruit je kunt kiezen om een webapplicatie te deployen, en Vue en React zijn twee van de topkandidaten.

In dit artikel vergelijken we Vue vs React in een onderlinge vergelijking. Als je een ontwikkelaar bent die net aan een project begint, zal deze handleiding je helpen om de juiste beslissing te nemen.

Wat is Vue?

Het Vue.js logo, met een donkergroene letter 'V' genest in een grotere, lichtere groene letter 'V'.
Vue.js

Vue is een flexibel en lichtgewicht op JavaScript gebaseerd framework dat krachtige webtools biedt voor het ontwikkelen van modernistische frontend webprojecten. Vue wordt ook beschouwd als een flexibel en evolutionair JavaScript framework, omdat het wijzigingen in de code van een applicatie mogelijk maakt zonder de fundamentele kenmerken aan te tasten, waardoor progressieve UI kan worden gemaakt. De grote flexibiliteit van Vue maakt het ook mogelijk om op maat gemaakte modules en visuele componenten toe te voegen aan de functionaliteit van de webapplicatie.

Geschiedenis

Evan You ontwierp Vue nadat hij met Google had samengewerkt aan verschillende projecten die AngularJS gebruikten. Hij vatte zijn denkproces later als volgt samen: “Ik realiseerde me, wat als ik gewoon het deel dat ik leuk vond aan Angular kon isoleren en iets ongelooflijk lichts kon ontwikkelen,” De eerste broncode commit van het project was in juli 2013, en Vue werd gepubliceerd in februari van het volgende jaar.

Populaire webapplicaties gebouwd met Vue

Hier is een lijst van populaire webapplicaties gebouwd met Vue,

  • Gitlab
  • Grammarly
  • Behance
  • Laravel Spark
  • Adobe Portfolio
  • 9gag
  • Behance
  • Nintendo
  • Font Awesome
React's logo, geïllustreerd door een blauw atoomsymbool.
React.js

Wat is React?

React is een open-source JavaScript bibliotheek waarmee webapps met geavanceerde gebruikersinterfaces kunnen worden gemaakt. Met React kunnen ontwikkelaars herbruikbare componenten op maat bouwen, waardoor de ontwikkelingstijd sneller kan verlopen. Bovendien maakt het vermogen om een webpagina snel te laden hem nog zoekmachinevriendelijker. Over het geheel genomen is het een uitstekende bibliotheek die het maken van zowel eenvoudige als geavanceerde bedrijfsapplicaties bevordert.

Geschiedenis

In vergelijking met alle programmeerframeworks AngularJS en Vue is React de oudste JavaScript bibliotheek. Het werd in 2013 gemaakt door Facebook als tool voor het maken van een dynamische interface voor verschillende websites. De virtuele DOM, die een weergave is van DOM elementen gebouwd met React componenten, is de basis van React.

Populaire webapplicaties gebouwd met React

Hier is een lijst van populaire webapplicaties gebouwd met React,

  • Facebook
  • Netflix
  • Twitter
  • PayPal
  • BBC News
  • Yahoo
  • Instagram
  • WhatsApp
  • Dropbox

Vue belangrijkste features

Vue heeft ook enkele in het oog springende features die zeer nuttig zijn om een werkende bedrijfsapplicatie te krijgen. Enkele van die features leggen we hieronder uit,

Virtual DOM

Virtual DOM is een concept dat door verschillende JavaScript frameworks, waaronder Vue, wordt gebruikt. In plaats van de DOM aan te passen, wordt een virtuele kopie van de DOM gebouwd en gepresenteerd in de vorm van JS (JavaScript) datastructuren. Eventuele aanpassingen aan de JavaScript daastructuren worden eerst gemaakt, en dan wordt deze laatste gematcht aan de oorspronkelijke datastructuur.

Two-way databinding

Vue biedt een  two-way bindingfunctionaliteit zoals in de afbeelding, als onderdeel van zijn MVVM framework. Met het gebruik van een binding directive genaamd v-bind die met Vue wordt meegeleverd, kun je met deze functionaliteit waarden bewerken of toepassen op HTML elementen, de stijl veranderen en klassen toepassen. Dit verschilt van frameworks als React, die alleen eenrichtingscommunicatie bieden.

Een flowchart die illustreert hoe data bewegen in two-way binding.
Two-way binding

Componenten

Componenten zijn Vue objecten die aangepaste HTML elementen bevatten en hergebruikt kunnen worden. Vue objecten en HTML elementen communiceren met elkaar via props (properties) en events. Het codeblok van een Vue component is even essentieel voor het ontwikkelen van Vue apps die stabiel en schaalbaar zijn.

Computed properties

Computed properties helpen bij het luisteren naar wijzigingen die aan UI elementen worden aangebracht en het uitvoeren van de relevante logica, waardoor verdere codering overbodig wordt. Als we een variabele willen muteren die afhankelijk is van de wijziging van een andere property, moeten we een computed property gebruiken. Andere gegevensattributen zijn van grote invloed op computed properties. Hier volgt een eenvoudig voorbeeld van computed properties,

Een codeblok dat een computed property weergeeft.
Een voorbeeld van een computed property

CSS overgangen en animaties

Wanneer HTML elementen worden toegevoegd, gewijzigd of verwijderd uit het DOM, biedt deze feature meerdere methoden om een overgang uit te voeren. Het wordt geleverd met een ingebouwde overgangscomponent die het element omgeeft dat verantwoordelijk is voor de terugkeer van het overgangseffect. Ontwikkelaars kunnen gemakkelijk externe animatiebibliotheken gebruiken om de gebruikerservaring te verbeteren.

Watchers

Watchers worden gebruikt voor gegevens die waarschijnlijk regelmatig veranderen, zoals Form Input Elements. Een ontwikkelaar hoeft in dit geval geen extra acties uit te voeren. Watcher handelt alle gegevensupdates af, terwijl de code toch eenvoudig en snel blijft.

Hier is een eenvoudig stukje code over Watchers:

Een codevoorbeeld dat de setup van een watcher toont.
Een voorbeeld van watchers

Watchers, methods, en computed properties kun je de drie belangrijkste manieren van de component noemen die gebruik kunnen maken van het reactieve karakter. Als je een asynchrone of kostbare actie moet doen op basis van veranderende gegevens, zijn watchers de beste optie.

React belangrijkste features

React heeft ook enkele in het oog springende features die zeer nuttig zijn om een werkende bedrijfsapplicatie te krijgen. Enkele van die features worden hieronder uitgelegd,

Virtual DOM

Deze React feature helpt bij het versnellen en wendbaar maken van het ontwikkelingsproces van applicaties. De methode maakt het gemakkelijk om een webpagina opnieuw te maken in het virtuele geheugen van React. Een virtual DOM wordt dus gebruikt om de werkelijke DOM na te bootsen. De complete UI wordt opnieuw gegenereerd door de virtual DOM wanneer de applicatie wordt gewijzigd of geüpgraded, door de componenten die zijn gewijzigd weer terug te zetten. Dit vermindert de hoeveelheid tijd en geld die nodig is om iets te ontwikkelen.

One-way databinding

One-way databinding houdt in dat React een unidirectionele datastroom gebruikt, waardoor programmeurs de callbackfunctie kunnen gebruiken om componenten te wijzigen in plaats van ze direct te wijzigen zoals in de afbeelding.

Een geïllustreerde afbeelding die de gegevensstroom in one-way binding weergeeft.
One-way binding

Flux is een JavaScript appontwerpcomponent waarmee je de datastroom vanaf een vaste plaats kunt regelen. Het geeft ontwikkelaars meer zeggenschap over de software, waardoor die beter aanpasbaar en bruikbaar wordt. Flux heeft drie belangrijke onderdelen namelijk, dispatcher, stores en views (componenten).

JSX

JavaScript XML is een opmaaktaal om het ontwerp van de interface van een applicatie te beschrijven. Het creëert een syntaxis die lijkt op HTML en wordt gebruikt om React componenten te ontwikkelen. Een van de beste aspecten van React JS is JSX, het maakt het schrijven van de bouwstenen uiterst eenvoudig voor ontwikkelaars.

Componenten

Dit betekent dat een UI van een React gebaseerde applicatie is samengesteld uit talloze componenten, die elk hun functionaliteit in JS gecodeerd hebben. Daardoor kunnen programmeurs gegevens door de hele app sturen zonder de DOM te beïnvloeden. De graphics en bewerkingen van de applicatie worden sterk beïnvloed door React JS componenten.

Declaratieve UI

De Declarative UI feature maakt React code begrijpelijker en het oplossen van bugs eenvoudiger. Niet alleen voor online apps, maar ook voor mobiele applicaties is React JS het ideale framework voor het maken van dynamische en interactieve gebruikersinterfaces.

Vue en React: Overeenkomsten en gemeenschappelijke features

Vue is gemaakt door React als inspiratiebron te nemen. Daarom zijn enkele overeenkomsten te vinden:

  • Ondersteuning voor Progressive Web Applications (PWA)
  • Gebruik van virtual DOM
  • View componenten die zowel samenstelbaar als reactief zijn
  • JavaScript code
  • Focus op een core library, met partnerlibrary’s voor netwerken en universeel toestandsbeheer
  • Mogelijkheid tot integratie met alle huidige webapplicaties

Vue vs React: welke is beter?

Deze frameworks gaan hand in hand in de huidige ontwikkelaarscommunity. In dit gedeelte geven we een vergelijking tussen Vue en React op basis van de gemeenschappelijke belangen van het framework.

Populariteit en arbeidsmarkt

Deze wedstrijd is gewonnen door React. Omdat Facebook deze technologie steunt, is het niet verwonderlijk dat het een grotere populariteit en community heeft. Vue heeft een mindere community, met beperkte resources en modules, maar het wordt nog steeds ondersteund door Evan You en het team.

React ligt ver voor op Vue wat betreft kansen op werk, omdat het al sinds 2013 bestaat en wordt gepromoot door de socialmediagigant Facebook. Vue daarentegen is een nieuwe partij die nog steeds aan populariteit wint.

Leercurve

Vue is verreweg het eenvoudigst te bestuderen en te begrijpen van alle JavaScript frameworks. Naar schatting duurt het een paar uur tot minder dan een week om het te leren. Alles wat nodig is, is een basiskennis van hoe ES6 werkt en enige kennis van programmeren met JavaScript. De documentatie van Vue is ook eenvoudig te begrijpen, omdat die niet zo uitgebreid is als die van andere frameworks.

Voor iemand die eerder met JavaScript heeft gewerkt, is React eenvoudig op te pakken. De vorming van een team wordt eenvoudiger door de lagere leercurve, want elke beginnende of professionele ontwikkelaar kan zich ermee bezighouden. Alleen de releases na 16.0 zijn actueel. Daardoor kunnen nieuwe ontwikkelaars moeite hebben met het implementeren van de meer ingewikkelde functionaliteiten.

Prestaties (snelheid)

De status van de Vue applicatie wordt onduidelijker met elke nieuwe optie of toevoeging van componenten, waardoor het moeilijker wordt om de applicatie sneller te laden. Gelukkig bevat dit framework een virtual DOM om de snelheid van de applicatie te verbeteren. Een van de belangrijkste eigenschappen van Vue is lazy loading. Het helpt bij het verkorten van de laadtijd.

De prestaties van een React applicatie zijn sneller, met een eenvoudiger uitvoering in klantervaring en discrete componenten die goed samenwerken. De op componenten gebaseerde structuur van React helpt bij de ontwikkeling van krachtigere applicaties met één pagina, terwijl herbruikbaarheid de complexiteit van de code vermindert en verminderde DOM interactie het laden van pagina’s versnelt. Verder richt de bibliotheek zich op het aanbrengen van essentiële wijzigingen aan de website zonder de volledige pagina opnieuw te hoeven laden. Daardoor wordt verspilling van het laden van pagina’s vermeden, maar wordt de content ververst.

Componenten en uitbreidbaarheid

Als het gaat om het ontwikkelen van op componenten gebaseerde gebruikersinterfaces, maken de uitgebreide bibliotheken van componenten in Vue en React het gemakkelijker om code te hergebruiken, de productiviteit van de ontwikkelaar te verhogen en het ontwikkelingsproces te versnellen.

Het is eenvoudig om Vue of React apps uit te breiden met externe bibliotheken. De meeste React bronbibliotheken zijn slechts componenten die de reeds bestaande componenten verbeteren. Verschillende van de externe bibliotheken in Vue zijn plugins die het ingebouwde pluginsysteem zelf gebruiken.

State beheer

Omdat state beheer in React onveranderlijk zijn en niet onmiddellijk gewijzigd kunnen worden, moet je de setState() functie (of useState() hook gebruiken om iets in de lokale state bij te werken.

Maar omdat het data attribuut op het Vue object werkt als de verzamelaar voor applicatiegegevens, is er geen reden om een methode als setState() uit te voeren om de toestand in Vue te veranderen.

Tools en templates om de ontwikkeling te vereenvoudigen

Sinds 2016 biedt React een externe CLI tool, genaamd create-react-app, die programmeurs helpt bij het voltooien van taken als app bouwen, scripts maken, enzovoort. Voorheen moesten React programmeurs bestanden van eerdere apps repliceren of van de grond af aan beginnen. Dat kostte niet veel tijd, maar het was een vervelende inspanning.

Vue, aan de andere kant, heeft een tool genaamd Vue CLI waarmee snel projecten gebouwd kunnen worden. Vue CLI heeft verschillende voordelen, waaronder de mogelijkheid om op elk moment tijdens het project plugins toe te voegen en eenvoudige aanpassingen.

Ecosysteem

Vue is een standalone framework, terwijl React het gebruik van externe bibliotheken vereist. Dit is een van de belangrijkste contrasten tussen de twee technologieën. Voor routing en toestandsbeheer is React afhankelijk van andere systemen zoals Flux/Redux. Deze frameworks maken het debuggen gemakkelijker door een enkele manier te bieden om de toestand te veranderen. Omdat Facebook het beheer van react-redux en react-router heeft gedelegeerd aan de gebruikers, is het ecosysteem steeds meer gefragmenteerd geraakt.

Vue heeft een kleiner aantal partnerbibliotheken. Toch bevat Vue momenteel features die het gebruik van een module in React nodig hebben, zoals props validatie. De belangrijkste frameworks van Vue, zoals Vuex en Vue router, worden onderhouden en ondersteund door het Vue team.

Beveiliging

Vue en React hebben beide beveiligingsfouten, hoewel Vue applicaties iets gemakkelijker te beschermen zijn dan React gebaseerde apps. Hoewel automatische verdediging tegen XSS problemen niet beschikbaar is, kunnen Vue programmeurs HTML code opschonen voordat ze die implementeren of extra bibliotheken gebruiken om aanvallen te helpen voorkomen. Je kunt direct webpagina’s genereren en de app,icaties zowel voor als na het genereren beveiligen in omstandigheden waarin je weet dat de HTML veilig is.

Om je te beschermen tegen XSS kwetsbaarheden, SQL injecties en andere bedreigingen, hangt de beveiliging van React af van de programmeur die beveiligingsnormen volgt. Hoewel React eenvoudig te gebruiken is, vereist het waarborgen dat React projecten veilig zijn veel vaardigheden en ervaring.

Mobiele ontwikkeling

React Native integreert de grootste features van native ontwikkeling en React, een top-of-the-line JavaScript toolkit voor het maken van gebruikersinterfaces. Je kunt React Native nu al gebruiken met je reeds bestaande Android en iOS applicaties, of je kunt vanaf nul beginnen en een geheel nieuwe applicatie bouwen. Met React Native’s React-achtige componenten kun je tot 99% van je JS code hergebruiken voor Android en iOS. Daardoor is een crossplatform applicatie ontstaan die eruitziet en functioneert als een pure iOS/Android app.

Je kunt widgets maken die volledig native zijn en volledige controle hebben over hun uiterlijk. De presentatielaag wordt door het React Native framework afgehandeld als gewoon een perfecte state output, waardoor het eenvoudig is om iOS/Android partner applicaties te maken met een natuurlijk uiterlijk en een intuïtief gevoel.

Ondanks dat Vue achterloopt op React, biedt het verschillende opties voor mobiele ontwikkeling. Allereerst is er NativeScript, waarmee je Vue applicaties kunt schrijven en ook kunt laten compileren tot native iOS/Android apps. Dan is er Capacitor, gemaakt door dezelfde mensen die Ionic hebben gemaakt. Met behulp van een eenvoudige API kun je Capacitor integreren in elke reeds bestaande Vue website en native iOS/Android mogelijkheden bieden. Tenslotte combineert Vue Native de voordelen van de Vue en React Native ecosystemen. Hierin kan React als de meest geschikte voor mobiele ontwikkeling worden genomen.

Testen en debuggen

Reactjs wordt geleverd met verschillende handige testrunners, die het ontwikkelingsproces gemakkelijker te volgen maken. Testrunners als Jest, Mocha, en vele anderen, bijvoorbeeld, stellen testers in staat om een gemeenschappelijke methode te volgen voor het uitvoeren van testsuites die hen helpt bij het blootleggen van gebreken in real-life browseropstellingen, onnodige functies, en het punt waar overmatige functiemanipulatie plaatsvindt. Het verkort de time-to-market, versnelt de inzet van applicaties, en bevordert een productievere sfeer.

Omdat Vue pas begint zijn de testmogelijkheden standaard, maar eenvoudig en effectief. Het biedt geen al te uitbundige tools en brengt de testbaarheid van de code niet in gevaar. Vue Testing Library en Vue Test Utils zijn twee van de bibliotheken die officieel door Vue worden aanbevolen. Omdat dit framework CI/CD en hot reloading ondersteunt, is het mogelijk om snellere feedbackmechanismen op te zetten.

Ondersteuning en community

Facebook, de grootste sociale netwerksite, zorgt dat React altijd ondersteund wordt. Het grootste voordeel is dat Facebook een toegewijd team heeft dat regelmatig werkt aan het verbeteren en finetunen van React. Vue wordt echter niet gesteund door een groot bedrijf. Dat wil niet zeggen dat het geen steun heeft van de community of niet populair is. Het komt simpelweg omdat de Vue community niet zo groot is als de React community .

React heeft meer dan 331.000 vragen op StackOverflow. Verder heeft het op het moment van schrijven meer dan 174.200 sterren op Github. Als het gaat om Vue zijn er ongeveer 83.400 vragen op StackOverflow binnen Vue en meer dan 187.800 sterren op Github.

Nadelen van Vue vs React

Zoals met alle technologieën hebben zowel Vue als React hun zwakke punten. Hieronder staan enkele van de nadelen van elk.

De grootste nadelen van Vue zijn:

  • Uitdagingen met bidirectionele binding
  • Uitdagingen in mobiele ondersteuning
  • Beperkte plugins
  • Beperkte schaalbaarheid
  • Beperkte ervaring programmeurs
  • Te veel flexibiliteit in codering
  • Gebruik van de community heeft enkele beperkingen

De grootste nadelen van React zijn onder meer:

  • Door de snelle groei verandert de omgeving steeds, waardoor het voor programmeurs moeilijk is zich aan te passen.
  • Met zo’n snelle actualisering en versnelling is goede documentatie moeilijk mee te komen.
  • ReactJS handelt alleen de UI lagen van de applicatie af, daarom zul je voor andere delen van de ontwikkeling andere tools moeten gebruiken.
  • Als er veel templates zijn en ze elkaar overlappen, kan JSX verwarrend zijn.

Samenvatting

In termen van hun respectievelijke use-cases zijn React, Vue, of elke andere op JavaScript gebaseerde aanpak allemaal behoorlijk spectaculair. In dit scenario is er geen duidelijke winnaar. Je moet uitzoeken wat jouw use-case is en die dan afstemmen op de mogelijkheden van deze platforms.

React is een beproefde leider met steun van bedrijven en een aanzienlijke open-source groep. De library is beter schaalbaar, zodat je ingewikkelder applicaties op bedrijfsniveau kunt maken. Omdat het een bibliotheek is, biedt React zijn gebruikers extra opties, zoals handmatig opnieuw renderen. Het maakt uitgebreid gebruik van functionele programmeertechnieken, zoals blijkt uit de manier waarop de bibliotheek omgaat met toestand en interactie tussen componenten.

Vue is een groeiende frontendontwikkelingsensatie. Het heeft een meer klassieke syntaxis, wat het gemakkelijker maakt om bestaande projecten over te zetten naar Vue. Het heeft de beste documentatie in de sector. Het kernteam heeft meer ingebouwde functionaliteit en partnerlibrary’s toegevoegd aan Vue als framework. Dit vereenvoudigt het ontwikkelingsproces om soepeler te verlopen.

Welke ben jij van plan te gebruiken voor je volgende project — Vue vs React — en waarom? Laat het ons weten in de commentaarsectie hieronder.

Shanika Wickramasinghe

Shanika Wickramasinghe is van beroep software engineer en afgestudeerd in Informatietechnologie. Haar specialiteiten zijn web- en mobiele ontwikkeling. Shanika beschouwt schrijven als het beste medium om te leren en haar kennis te delen. Ze is gepassioneerd over alles wat ze doet, houdt van reizen en geniet van de natuur wanneer ze een pauze neemt van haar drukke werkschema. Je kunt met haar in contact komen op LinkedIn.