Przejdź bezpośrednio do treści

Tworzenie aplikacji Vue

Instancja aplikacji

Każda aplikacja Vue zaczyna się od utworzenia nowej instancji aplikacji za pomocą funkcji createApp:

js
import { createApp } from 'vue'

const app = createApp({
  /* opcje komponentu głównego */
})

Komponent główny

Obiekt, który przekazujemy do createApp, jest w rzeczywistości komponentem. Każda aplikacja wymaga „komponentu głównego (root component)”, który może zawierać inne komponenty jako swoje elementy podrzędne.

Jeśli używasz komponentów pojedynczego pliku (Single-File Components), zazwyczaj importujemy komponent główny z innego pliku:

js
import { createApp } from 'vue'
// importowanie komponentu głównego App z pliku pojedynczego komponentu
import App from './App.vue'

const app = createApp(App)

Chociaż wiele przykładów w tym przewodniku wymaga tylko jednego komponentu, większość rzeczywistych aplikacji jest zorganizowana w drzewo zagnieżdżonych, komponentów wielokrotnego użytku. Na przykład drzewo komponentów aplikacji Todo może wyglądać tak:

App (komponent główny)
├─ TodoList
│  └─ TodoItem
│     ├─ TodoDeleteButton
│     └─ TodoEditButton
└─ TodoFooter
   ├─ TodoClearButton
   └─ TodoStatistics

W kolejnych sekcjach przewodnika omówimy, jak definiować i komponować wiele komponentów razem. Zanim jednak to zrobimy, skupimy się na tym, co dzieje się wewnątrz pojedynczego komponentu.

Montowanie aplikacji

Instancja aplikacji nie wyrenderuje niczego, dopóki nie zostanie wywołana jej metoda .mount(). Oczekuje ona argumentu „container”, którym może być rzeczywisty element DOM lub selektor:

html
<div id="app"></div>
js
app.mount('#app')

Zawartość komponentu głównego aplikacji zostanie wyrenderowana wewnątrz elementu kontenera. Sam element kontenera nie jest uważany za część aplikacji.

Metoda .mount() powinna być zawsze wywoływana po zakończeniu wszystkich konfiguracji aplikacji i rejestracji zasobów. Warto zauważyć, że zwracana wartość, w przeciwieństwie do metod rejestracji zasobów, to instancja komponentu głównego, a nie instancja aplikacji.

Szablon komponentu głównego w DOM

Szablon dla komponentu głównego jest zazwyczaj częścią samego komponentu, ale można go również dostarczyć osobno, wpisując go bezpośrednio w kontener montowania:

html
<div id="app">
  <button @click="count++">{{ count }}</button>
</div>
js
import { createApp } from 'vue'

const app = createApp({
  data() {
    return {
      licznik: 0
    }
  }
})

app.mount('#app')

Vue automatycznie użyje innerHTML kontenera jako szablonu, jeśli komponent główny nie ma już opcji template.

Szablony w DOM są często używane w aplikacjach, które korzystają z Vue bez etapu kompilacji. Mogą być również używane w połączeniu z frameworkami po stronie serwera, gdzie główny szablon może być dynamicznie generowany przez serwer.

Konfiguracja aplikacji

Instancja aplikacji udostępnia obiekt .config, który pozwala konfigurować kilka opcji na poziomie aplikacji, na przykład definiowanie globalnego handlera błędów:

js
app.config.errorHandler = (err) => {
  /* obsługa błędu */
}

Instancja aplikacji oferuje także kilka metod do rejestrowania zasobów na poziomie aplikacji. Na przykład rejestrowanie komponentu:

js
app.component('TodoDeleteButton', TodoDeleteButton)

To sprawia, że TodoDeleteButton jest dostępny do użycia w całej aplikacji. Omówimy rejestrację komponentów i innych typów zasobów w kolejnych sekcjach przewodnika. Możesz również przejrzeć pełną listę interfejsów API instancji aplikacji w jej dokumentacji API.

Upewnij się, że zastosowałeś wszystkie konfiguracje aplikacji przed jej zamontowaniem!

Wiele instancji aplikacji

Nie jesteś ograniczony do jednej instancji aplikacji na stronie. API createApp pozwala na współistnienie wielu aplikacji Vue na tej samej stronie, każda z własnym zakresem konfiguracji i zasobów globalnych:

js
const app1 = createApp({
  /* ... */
})
app1.mount('#container-1')

const app2 = createApp({
  /* ... */
})
app2.mount('#container-2')

Jeśli używasz Vue do wzbogacenia HTML renderowanego po stronie serwera i potrzebujesz Vue tylko do kontrolowania określonych części dużej strony, unikaj montowania jednej instancji Vue na całej stronie. Zamiast tego utwórz wiele małych instancji aplikacji i zamontuj je na elementach, za które są odpowiedzialne.

Tworzenie aplikacji VueJest załadowany