W NOVA LAB każdy moduł statku jest samodzielną jednostką - ma własne zasilanie, logikę i obudowę. Tak samo Vue Single File Component łączy template, script i style w jednym pliku.
1<template>
2 <!-- INTERFEJS - co widzi astronauta -->
3 <div class="life-support-panel">
4 <h1>{{ systemName }}</h1>
5 <p>Poziom tlenu: {{ oxygenLevel }}%</p>
6 <div class="status" :class="statusClass">{{ status }}</div>
7 </div>
8</template>
9
10<script setup>
11// LOGIKA - jak działa system
12import { ref, computed } from 'vue'
13
14const systemName = ref('System Podtrzymywania Życia')
15const oxygenLevel = ref(98.5)
16
17const status = computed(() =>
18 oxygenLevel.value > 90 ? 'OPTYMALNY' : 'OSTRZEŻENIE'
19)
20
21const statusClass = computed(() =>
22 oxygenLevel.value > 90 ? 'status-ok' : 'status-warning'
23)
24</script>
25
26<style scoped>
27/* WYGLĄD - jak wygląda panel */
28.life-support-panel {
29 background: #0a1628;
30 border: 2px solid #00ff88;
31 border-radius: 8px;
32 padding: 1.5rem;
33 color: #e0e0e0;
34}
35
36.status-ok { color: #00ff88; }
37.status-warning { color: #ffaa00; }
38</style><template> - Interfejs Użytkownika<script setup> - Logika Systemu<style scoped> - Wygląd Paneluscoped izoluje style - jeden moduł nie psuje drugiego<script setup> vs stara składnia1<!-- PROTOKÓŁ NOWA (zalecany) -->
2<script setup>
3import { ref } from 'vue'
4const pressure = ref(101.3)
5</script>
6
7<!-- STARY PROTOKÓŁ (legacy) -->
8<script>
9import { ref } from 'vue'
10export default {
11 setup() {
12 const pressure = ref(101.3)
13 return { pressure }
14 }
15}
16</script>W NOVA LAB używamy wyłącznie nowego protokołu - jest krótszy i bezpieczniejszy.