Tradiční webový vývoj odděluje HTML, CSS a JS do různých souborů. SFC tento přístup mění a seskupuje vše, co spolu logicky souvisí, na jedno místo. To zlepšuje přehlednost a usnadňuje údržbu rozsáhlých aplikací.
SFC se skládá ze tří hlavních bloků:
text pro výpis proměnné).<style scoped> můžete zajistit, že se styly aplikují pouze na tuto konkrétní komponentu. Už se nemusíte bát, že změna barvy tlačítka v menu rozbije tlačítka v patičce webu.Kosik.vue.
Prohlížeč souboru .vue nerozumí. Proto je potřeba nástroj (např. Vite nebo Webpack), který:
1. Rozebere SFC soubor na jeho části. 2. Zkompiluje HTML šablonu do efektivních renderovacích funkcí. 3. Zpracuje CSS (např. přidá unikátní ID pro scoped styly). 4. Vše spojí do jednoho JavaScriptového balíčku.
| Metoda | Organizace | Rozsah stylů |
|---|---|---|
| Tradiční (HTML/CSS/JS) | Oddělené soubory | Globální (riziko kolizí) |
| React (JSX) | Vše v JS (CSS často externě) | Často vyžaduje knihovny (CSS-in-JS) |
| Vue SFC | Bloky v jednom souboru | Vestavěný „Scoped“ mechanismus |
<template>
<div class="karta">
<h1>{{ nadpis }}</h1>
<button @click="upozorni">Klikni</button>
</div>
</template>
<script setup>
const nadpis = "Vítejte v IT encyklopedii"
const upozorni = () => alert("Ahoj!")
</script>
<style scoped>
.karta { border: 1px solid silver; padding: 20px; }
h1 { color: #42b983; }
</style>
Zajímavost: Ačkoliv jsou SFC spojovány hlavně s Vue, velmi podobný koncept využívá i framework Svelte, který jde ještě dál – v souboru.sveltepíšete kód, který se téměř neliší od standardního HTML, ale výsledkem je extrémně rychlá aplikace bez nutnosti virtuálního DOMu.