Vue.js
Przegląd
Vue.js to progresywny framework JavaScript do budowania interfejsów użytkownika. Został zaprojektowany tak, aby można go było wdrażać stopniowo, i koncentruje się na warstwie widoku, dzięki czemu łatwo zintegrować go z innymi bibliotekami lub istniejącymi projektami.
Pierwsze kroki
Utwórz repozytorium z szablonu
Na pulpicie przejdź do zakładki Tools & Deployment. Kliknij przycisk "New Repository", wybierz szablon Vue.js z listy rozwijanej, wpisz nazwę repozytorium i subdomenę, a następnie kliknij "Create Repository".
Sklonuj repozytorium
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Zainstaluj zależności
npm install
Uruchom serwer deweloperski
npm run dev
Otwórz http://localhost:4200 w przeglądarce.
Zbuduj i wypchnij zmiany
npm run build
git add .
git commit -m "Initial setup"
git push origin main
Lokalny rozwój z Dockerem
Jeśli nie masz lokalnie zainstalowanego Node.js, możesz użyć Dockera do uruchamiania komend Vue. Projekt zawiera Dockerfile dla buildów produkcyjnych z nginx.
Wymagania wstępne
Zainstaluj Docker Desktop dla swojego systemu operacyjnego (Windows, Mac lub Linux).
Uruchamianie komend z Dockerem
# Uruchom npm install
docker run --rm -v $(pwd):/app -w /app node:lts-alpine npm install
# Uruchom serwer deweloperski (dostępny pod localhost:4200)
docker run --rm -v $(pwd):/app -w /app -p 4200:4200 node:lts-alpine npm run dev
# Zbuduj wersję produkcyjną
docker run --rm -v $(pwd):/app -w /app node:lts-alpine npm run build
Struktura projektu
Gdzie znajdują się pliki:
├── src/
│ ├── assets/ # Zasoby statyczne (obrazy, czcionki)
│ ├── components/ # Komponenty Vue
│ ├── views/ # Komponenty stron
│ ├── router/ # Konfiguracja Vue Router
│ ├── stores/ # Store'y Pinia
│ ├── App.vue # Komponent główny
│ └── main.js # Punkt wejścia aplikacji
├── public/ # Publiczne pliki statyczne
├── index.html # Punkt wejścia HTML
├── vite.config.js # Konfiguracja Vite
├── package.json # Zależności i skrypty
└── Dockerfile # Konfiguracja buildu Docker
Typowe zadania
Tworzenie komponentu
Twórz pliki .vue w katalogu 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>
Dodawanie trasy
Edytuj 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;
Korzystanie ze store Pinia
Utwórz store w 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-- }
}
});
Korzystanie z Tailwind CSS
Tailwind CSS 4 jest wstępnie skonfigurowany. Używaj klas bezpośrednio w szablonach:
<div class="bg-blue-500 text-white p-4 rounded-lg">
Hello Tailwind!
</div>
Przydatne komendy
npm run dev
Uruchom serwer deweloperski (port 4200)
npm run build
Zbuduj wersję produkcyjną
npm run preview
Podejrzyj build produkcyjny lokalnie
npm run test:unit
Uruchom testy jednostkowe z Vitest
npm run lint
Sprawdź i napraw styl kodu
npm run format
Sformatuj kod za pomocą Prettiera
Rozwiązywanie problemów
npm install kończy się błędami uprawnień
Przyczyna: Problemy z uprawnieniami do cache npm lub node_modules.
Rozwiązanie: Usuń folder node_modules i plik package-lock.json, a następnie ponownie uruchom npm install.
Port 4200 jest już używany
Przyczyna: Inny proces używa portu 4200.
Rozwiązanie: Użyj innego portu: npm run dev -- --port 3000 lub zatrzymaj inny proces.
Komponent się nie aktualizuje
Przyczyna: Reaktywność nie jest poprawnie skonfigurowana.
Rozwiązanie: Używaj ref() dla wartości prymitywnych, a reactive() dla obiektów. Wartości ref pobieraj przez .value w skrypcie, ale nie w szablonie.
Router nie działa
Przyczyna: Brak RouterView w App.vue lub router nie jest zarejestrowany.
Rozwiązanie: Upewnij się, że <RouterView /> jest w App.vue, a router jest dodany przez app.use(router) w main.js.
Build kończy się błędem po wdrożeniu
Przyczyna: Błędy buildu lub brakujące zależności.
Rozwiązanie: Najpierw uruchom npm run build lokalnie, aby sprawdzić błędy przed wypchnięciem zmian.
Proces wdrażania
Za każdym razem, gdy wypychasz kod do Git, twoja aplikacja jest automatycznie budowana i wdrażana:
Adres URL twojej wdrożonej aplikacji ma następujący format:
https://<your-subdomain>-<repo-name>.<session-domain>
Przykład: https://student01-module-a.demo.nstrim.app