Vue.js
Overzicht
Vue.js is een progressief JavaScript-framework voor het bouwen van gebruikersinterfaces. Het is ontworpen om incrementeel adopteerbaar te zijn en richt zich op de view-laag, waardoor het gemakkelijk te integreren is met andere bibliotheken of bestaande projecten.
Snelstart
Repository aanmaken vanuit sjabloon
Ga in je dashboard naar het tabblad Tools & Deployment. Klik op de knop "New Repository", selecteer het Vue.js-sjabloon uit het dropdownmenu, voer een repository-naam en subdomein in en klik vervolgens op "Create Repository".
Je repository klonen
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Afhankelijkheden installeren
npm install
Ontwikkelingsserver starten
npm run dev
Open http://localhost:4200 in je browser.
Bouwen & pushen
npm run build
git add .
git commit -m "Initial setup"
git push origin main
Lokale ontwikkeling met Docker
Als je geen Node.js lokaal hebt geïnstalleerd, kun je Docker gebruiken om Vue-commando's uit te voeren. Het project bevat een Dockerfile voor productiebuilds met nginx.
Vereisten
Installeer Docker Desktop voor jouw besturingssysteem (Windows, Mac of Linux).
Commando's uitvoeren met Docker
# Run npm install
docker run --rm -v $(pwd):/app -w /app node:lts-alpine npm install
# Run development server (accessible at localhost:4200)
docker run --rm -v $(pwd):/app -w /app -p 4200:4200 node:lts-alpine npm run dev
# Build for production
docker run --rm -v $(pwd):/app -w /app node:lts-alpine npm run build
Projectstructuur
Begrijpen waar bestanden zich bevinden:
├── src/
│ ├── assets/ # Statische assets (afbeeldingen, fonts)
│ ├── components/ # Vue-componenten
│ ├── views/ # Paginacomponenten
│ ├── router/ # Vue Router-configuratie
│ ├── stores/ # Pinia-stores
│ ├── App.vue # Hoofdcomponent
│ └── main.js # Applicatie-startpunt
├── public/ # Publieke statische bestanden
├── index.html # HTML-startpunt
├── vite.config.js # Vite-configuratie
├── package.json # Afhankelijkheden en scripts
└── Dockerfile # Docker build-configuratie
Veelvoorkomende taken
Een component aanmaken
Maak .vue-bestanden in src/components/:
<!-- src/components/Button.vue -->
<script setup>
defineProps({
label: String
});
const emit = defineEmits(['click']);
</script>
<template>
<button
class="bg-blue-500 text-white px-4 py-2 rounded"
@click="emit('click')"
>
{{ label }}
</button>
</template>
Een route toevoegen
Bewerk src/router/index.js:
import { createRouter, createWebHistory } from 'vue-router';
import Home from '../views/Home.vue';
import About from '../views/About.vue';
const router = createRouter({
history: createWebHistory(),
routes: [
{ path: '/', component: Home },
{ path: '/about', component: About }
]
});
export default router;
Pinia-store gebruiken
Maak een store in src/stores/:
// src/stores/counter.js
import { defineStore } from 'pinia';
export const useCounterStore = defineStore('counter', {
state: () => ({ count: 0 }),
actions: {
increment() { this.count++ },
decrement() { this.count-- }
}
});
Tailwind CSS gebruiken
Tailwind CSS 4 is vooraf geconfigureerd. Gebruik klassen direct in je templates:
<div class="bg-blue-500 text-white p-4 rounded-lg">
Hello Tailwind!
</div>
Handige commando's
npm run dev
Ontwikkelingsserver starten (poort 4200)
npm run build
Bouwen voor productie
npm run preview
Productiebuild lokaal previewen
npm run test:unit
Unit-tests uitvoeren met Vitest
npm run lint
Codestijl controleren en oplossen
npm run format
Code formatteren met Prettier
Probleemoplossing
npm install fails with permission errors
Oorzaak: Permissieproblemen met de npm-cache of node_modules.
Oplossing: Verwijder de map node_modules en package-lock.json, en voer dan npm install opnieuw uit.
Port 4200 already in use
Oorzaak: Een ander proces gebruikt poort 4200.
Oplossing: Gebruik een andere poort: npm run dev -- --port 3000 of stop het andere proces.
Component not updating
Oorzaak: Reactiviteit niet correct opgezet.
Oplossing: Gebruik ref() voor primitieven en reactive() voor objecten. Toegang tot ref-waarden met .value in script, maar niet in template.
Router not working
Oorzaak: RouterView niet in App.vue of router niet geregistreerd.
Oplossing: Zorg ervoor dat <RouterView /> in App.vue staat en dat de router wordt toegevoegd met app.use(router) in main.js.
Build fails after deployment
Oorzaak: Build-fouten of ontbrekende afhankelijkheden.
Oplossing: Voer eerst lokaal npm run build uit om op fouten te controleren voordat je pusht.
Implementatie-workflow
Elke keer dat je code naar Git pusht, wordt je applicatie automatisch gebouwd en geïmplementeerd:
De URL van je geïmplementeerde applicatie volgt dit formaat:
https://<your-subdomain>-<repo-name>.<session-domain>
Voorbeeld: https://student01-module-a.demo.nstrim.app