Tuple Logo
vue-js

SHARE

Vue.js

Wat is Vue.js?

Vue.js is een open source JavaScript framework voor het bouwen van gebruikersinterfaces en single-page applications. Veel developers noemen het gewoon Vue. Beide namen gaan over hetzelfde framework.

Vue richt zich op wat de gebruiker ziet: knoppen, formulieren, lijsten en complete schermen. Je bouwt een interface op uit losse componenten. Vue zorgt ervoor dat het scherm vanzelf bijwerkt zodra de data verandert.

Evan You bracht Vue.js in 2014 uit. Hij werkte daarvoor bij Google met AngularJS en wilde een lichter alternatief maken dat de handige delen behield. Vue valt onder de MIT-licentie, dus je mag het gratis gebruiken, ook in commerciële projecten.

Er zit geen groot techbedrijf achter Vue. Het project draait op een kernteam, de community en sponsors.

Wat betekent progressive framework?

Vue noemt zichzelf een progressive framework. Dat betekent dat je het stap voor stap kunt inzetten. Je kunt Vue gebruiken voor één interactief onderdeel op een bestaande pagina. Je kunt er ook een volledige webapplicatie mee bouwen, met routing, state management en server-side rendering.

Je hoeft dus niet alles in één keer over te nemen. Begin je klein, dan kun je later uitbreiden zonder van framework te wisselen.

Waarvoor gebruik je Vue.js?

Vue.js is breed inzetbaar voor de frontend van websites en webapplicaties. Je komt het vaak tegen in deze situaties:

Bekende gebruikers zijn onder meer GitLab en Alibaba. Daarnaast is Vue populair binnen het Laravel-ecosysteem in de PHP-wereld.

Hoe werkt Vue.js?

Vue.js draait om drie ideeën: componenten, reactiviteit en templates. Samen zorgen ze ervoor dat je minder code schrijft om het scherm actueel te houden.

Componenten

Een component is een herbruikbaar blok van de interface, zoals een knop, een productkaart of een navigatiebalk. Elk component heeft zijn eigen HTML, logica en styling. Een grote applicatie bestaat uit een boom van componenten die in elkaar passen.

Componenten geven data aan elkaar door met props. Een kind-component kan via een event een seintje terugsturen naar zijn ouder. Zo blijft duidelijk waar data vandaan komt.

Reactiviteit

Reactiviteit is het hart van Vue. Je koppelt data aan de interface en Vue houdt bij welke delen van het scherm van welke data afhangen. Verandert een waarde, dan werkt Vue alleen die delen bij.

Je hoeft de pagina dus niet zelf aan te passen met losse DOM-opdrachten. In Vue 3 werkt dit systeem met JavaScript Proxies. Die merken het op zodra data wordt gelezen of aangepast.

Templates en directives

In een template schrijf je gewone HTML, aangevuld met speciale attributen. Die attributen heten directives en beginnen met v-. Met dubbele accolades zet je een waarde direct in de tekst, zoals {{ naam }}.

Dit zijn de directives die je het vaakst gebruikt:

Virtual DOM

Standaard werkt Vue met een virtual DOM. Dat is een lichte kopie van de pagina in het geheugen. Bij een wijziging vergelijkt Vue de nieuwe versie met de vorige en past alleen de verschillen toe op de echte pagina.

Vue haalt hier extra snelheid uit doordat de compiler templates vooraf analyseert. Delen die nooit veranderen, slaat Vue bij een update over. Daarnaast werkt het Vue-team aan Vapor Mode: een optionele compilatiemodus die de virtual DOM helemaal overslaat en de pagina direct bijwerkt.

Single-file components

In de meeste Vue-projecten schrijf je componenten als single-file component (SFC). Dat is een bestand met de extensie .vue waarin template, logica en styling bij elkaar staan. Een build tool zoals Vite zet dit bestand om naar code die de browser begrijpt.

Een eenvoudige teller ziet er zo uit:

<script setup>
import { ref } from 'vue'

const count = ref(0)
</script>

<template>
  <button @click="count++">
    Je hebt {{ count }} keer geklikt
  </button>
</template>

Het script-blok bevat de logica. Door ref() is de variabele count reactief. Het template toont de waarde en verhoogt die bij elke klik. Met scoped geldt de styling alleen voor dit component.

Options API en Composition API

Vue.js kent twee manieren om de logica van een component te schrijven. Ze bestaan naast elkaar en je kunt ze allebei in hetzelfde project gebruiken.

Options API

De Options API is de klassieke manier uit Vue 2. Je deelt een component op in vaste onderdelen, zoals data, methods, computed en watch. Dat is overzichtelijk voor kleine componenten en makkelijk te leren.

export default {
  data() {
    return { count: 0 }
  },
  methods: {
    increment() {
      this.count++
    }
  }
}

Composition API

De Composition API kwam met Vue 3. Hier schrijf je logica als gewone functies, met hulpmiddelen zoals ref, computed en watch. Bij grotere componenten houd je zo alles wat bij elkaar hoort ook echt bij elkaar.

<script setup>
import { ref, computed } from 'vue'

const count = ref(0)
const doubled = computed(() => count.value * 2)
</script>

Een groot voordeel is hergebruik. Je kunt logica in een eigen functie zetten, een zogenoemde composable, en die in meerdere componenten gebruiken. De Composition API werkt ook beter samen met TypeScript. Voor volledige applicaties met een build tool raadt Vue daarom de Composition API aan.

Het ecosysteem rond Vue.js

Een sterk punt van Vue.js is dat de belangrijkste tools officieel worden onderhouden of dicht bij het kernteam staan. Je hoeft dus niet zelf uit tientallen losse pakketten te kiezen. Dit zijn de bekendste onderdelen:

Daarnaast zijn er veel UI-bibliotheken met kant-en-klare componenten, zoals Vuetify, PrimeVue en Quasar.

Voordelen en nadelen van Vue.js

Geen enkel framework is voor elk project de beste keuze. Het helpt om de sterke en zwakke kanten van Vue.js naast elkaar te zetten.

Voordelen

Vue staat bekend als een van de toegankelijkste frameworks om mee te beginnen. De belangrijkste voordelen zijn:

Nadelen

Er zijn ook punten om rekening mee te houden:

Vue.js vs React en Angular

Vue.js wordt vaak vergeleken met React en Angular. Alle drie zijn geschikt voor moderne webapplicaties, maar hun aanpak verschilt flink.

Vue.js

React

Angular

Type

Progressive framework

Library voor de view-laag

Volledig framework

Gemaakt door

Evan You en de community

Meta en de community

Google

Templates

HTML-templates (JSX kan ook)

JSX

HTML-templates

Taal

JavaScript of TypeScript

JavaScript of TypeScript

TypeScript

Routing en state

Officiële tools

Zelf kiezen uit de community

Ingebouwd

Leercurve

Laag

Gemiddeld

Hoog

React richt zich puur op de interface. Voor routing en state management kies je zelf pakketten. Angular is juist een compleet pakket met alles ingebouwd, maar vraagt ook meer leertijd. Vue zit daartussenin: lichter dan Angular, met meer officiële keuzes dan React.

Korte geschiedenis van Vue.js

Evan You publiceerde de eerste versie van Vue.js in februari 2014. Het begon als zijproject en groeide uit tot een van de populairste JavaScript frameworks ter wereld.

In 2016 verscheen Vue 2, met onder meer een virtual DOM en ondersteuning voor server-side rendering. Die versie maakte Vue echt groot.

Vue 3 kwam uit in september 2020. Die versie bracht de Composition API, een herschreven reactiviteitssysteem en betere ondersteuning voor TypeScript. Sinds februari 2022 is Vue 3 de standaardversie. Vue 2 bereikte op 31 december 2023 het einde van zijn officiële ondersteuning.

Een framework dat met je project meegroeit

Vue.js is een toegankelijk en flexibel framework voor het bouwen van gebruikersinterfaces. Componenten, reactiviteit en templates vormen de basis. Je kunt klein beginnen met één component en doorgroeien naar een volledige applicatie met routing, state management en server-side rendering.

Zoek je een framework dat snel te leren is en toch stevig genoeg voor grote projecten, dan is Vue een sterke kandidaat. Wil je het grootste ecosysteem, dan ligt React meer voor de hand. Wil je alles ingebouwd en strak gestructureerd, dan past Angular beter.

Veelgestelde vragen
Is Vue.js een framework of een library?

Vue.js is een framework. Het kernpakket richt zich op de view-laag, net als een library. Met de officiële tools voor routing en state management groeit het uit tot een compleet framework. Daarom noemt Vue zichzelf een progressive framework.


Is Vue.js gratis?

Ja. Vue.js is open source en valt onder de MIT-licentie. Je mag het gratis gebruiken in persoonlijke en commerciële projecten.


Is Vue.js moeilijk om te leren?

Nee, Vue geldt als een van de makkelijkste frameworks om mee te beginnen. Ken je de basis van HTML, CSS en JavaScript, dan kun je snel aan de slag. Voor grotere projecten leer je er wel onderwerpen bij, zoals de Composition API, routing en state management.


Wat is het verschil tussen Vue.js en Nuxt?

Vue.js is het framework voor de interface zelf. Nuxt is een meta-framework dat op Vue is gebouwd. Het voegt onder andere server-side rendering, static site generation en automatische routing toe. Dat is handig voor SEO en snelle laadtijden.


Kun je Vue.js gebruiken met TypeScript?

Ja. Vue 3 is zelf in TypeScript geschreven en ondersteunt het volledig. Vooral samen met de Composition API werkt TypeScript goed.


Wordt Vue 2 nog ondersteund?

Nee. Vue 2 bereikte op 31 december 2023 het einde van zijn officiële ondersteuning. Het krijgt geen updates of beveiligingsfixes meer van het Vue-team. Voor nieuwe projecten gebruik je Vue 3.


Ook interessant

Nieuwsgierig geworden?

Wij vertellen je graag meer!

Contact opnemen
Tuple Logo
Veenendaal (HQ)
De Smalle Zijde 3-05, 3903 LL Veenendaal
info@tuple.nl‭+31 318 24 01 64‬
Snel navigeren
Succesverhalen