Skip to content

Vytvoření Vue aplikace

Instance aplikace

Každá Vue aplikace začíná vytvořením nové instance pomocí funkce createApp:

js
import { createApp } from 'vue'

const app = createApp({
  /* nastavení root kompomenty */
})

Root komponenta

Objekt, který posílíme do funkce createApp je ve skutečnosti komponenta. Každá aplikace potřebuje „root komponentu“, která může obsahovat další komponenty a jejich potomky.

Pokud používáte Single-File komponenty (SFC), typicky importujeme kořenovou komponentu z jiného souboru:

js
import { createApp } from 'vue'
// import root komponenty App ze Single-File komponenty (SFC)
import App from './App.vue'

const app = createApp(App)

I když mnoha příkladům v tomto průvodci stačí pouze jediná komponenta, většina skutečných aplikací je organizována do stromu vnořených, znovupoužitelných komponent. Strom komponent aplikace Todo může vypadat například takto:

App (root komponenta)
├─ TodoList
│  └─ TodoItem
│     ├─ TodoDeleteButton
│     └─ TodoEditButton
└─ TodoFooter
   ├─ TodoClearButton
   └─ TodoStatistics

V dalších částech průvodce probereme, jak definovat více komponent a skládat je dohromady. Předtím se zaměříme na to, co se děje uvnitř samostatné komponenty.

Připojení Vue aplikace

Instance aplikace nic nevykreslí, dokud není zavolána její funkce .mount(). Funkce jako svůj parametr očekává „kontejner“, což může být buď skutečný DOM element, nebo řetězec CSS selektoru:

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

Obsah root komponenty aplikace bude vykreslen uvnitř zadaného kontejneru. Samotný element kontejneru není za součást aplikace považován.

Funkce .mount() by měla být vždy volána po dokončení všech aplikačních konfigurací a registrací zdrojů. Všimněte si, že narozdíl od funkcí pro registraci zdrojů je její návratovou hodnotou instance root komponenty namísto instance aplikace.

In-DOM šablona root komponenty

Šablona root komponenty je většinou součástí komponenty samotné. Mžeme však šablonu poskytnout i samostatně, pokud ji zapíšeme přímo do elementu určeného pro připojení komponenty (mount container):

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

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

app.mount('#app')

Pokud root komponenta ještě nemá vlastní nastavení template, Vue automaticky použije jako šablonu atribut innerHTML kontejneru.

In-DOM šablony jsou často používány v aplikacích, které používají Vue bez build fáze. Mohou být také použity ve spojení se server-side frameworky, kde může být root šablona dynamicky generována serverem.

Nastavení aplikace

Instance aplikace vystavuje objekt .config, jenž nám umožňuje nakonfigurovat několik globálních nastavení, například definovat globální hadler pro obsluhu chyb, který zachycuje chyby ze všech komponent potomků:

js
app.config.errorHandler = (err) => {
  /* zpracovat chybu */
}

Instance aplikace také poskytuje několik funkcí pro registraci globálních zdrojů. Například registraci komponenty:

js
app.component('TodoDeleteButton', TodoDeleteButton)

Díky tomu je TodoDeleteButton dostupný pro použití kdekoli v naší aplikaci. Registraci komponent a dalších typů zdrojů se budeme více věnovat v dalších částech průvodce. Můžete si také projít úplný seznam API funkcí instance aplikace v API referenci.

Ujistěte se, že jste všechny aplikační konfigurace použili před voláním funkce .mount()!

Více aplikačních instancí

Nejste omezeni na jednu instanci aplikace na jedné stránce. API createApp umožňuje koexistenci více Vue aplikací na stejné stránce, z nichž každá má svůj vlastní scope pro konfiguraci a globální zdroje:

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

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

Pokud používáte Vue k obohacení HTML generovaného na serveru a potřebujete ho pouze k ovládání konkrétních částí velké stránky, vyhněte se připojení (mount) jediné instance Vue aplikace na celou stránku. Místo toho vytvořte několik malých aplikačních instancí a připojte je k elementům, za které jsou zodpovědné.

Vytvoření Vue aplikace has loaded