IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 9 - Databázový klient ve Vue - Příprava projektu

V předchozí lekci, Jednoduchá kalkulačka ve Vue, jsme dokončili poměrně složitou kalkulačku ve Vue, tentokrát to zkusíme jednodušeji.

Dnes začneme pracovat na pokročilém projektu a postupně si zde vytvoříme plně funkční klientskou aplikaci pro databázi filmů a osobností, představujících režiséry nebo herce. Komunikace s databází bude realizována prostřednictvím předem připraveného RESTful API v Node.js. Klient bude umožňovat pohodlnou správu jednotlivých záznamů (filmů i osobností) v databázi a jejich výpis v seznamu bude možné filtrovat podle různých dostupných parametrů.

Kód aplikace bude maximálně stavět na využití funkcionality čistého JavaScriptu (podle standardu ECMAScript 6) a samotné knihovny Vue, aby byl kurz maximálně univerzální. Pokud budete chtít později přidat jakékoli další knihovny, není to problém.

Pro vývoj Vue klienta je potřeba mít nainstalované Node.js a pro účely testování i MongoDB databázi. Zde je ukázka toho, jak bude vypadat závěrečná aplikace:

Vytvoření projektu

Náš projekt bude rozdělen do dvou hlavních částí:

  • klientská Vue aplikace, kterou si postupně naprogramujeme v rámci tohoto tutoriálu
  • serverová část v Node.js pro spojení s MongoDB databází, která bude dostupná ke stažení v příslušném článku

Použitou architekturu s rozdělením jednotlivých částí projektu a jejich vzájemnou komunikaci znázorňuje následující diagram:

Vue

Šablona Vue klienta

Ke stažení Vue šablony pro klientskou aplikaci můžeme použít následující příkaz, spuštěný z kořenového adresáře projektu:

vue create client

Zobrazí se nabídka možností pro vytvoření nového projektu, jako při tvorbě kalkulačky:

Vue CLI v4.5.13
? Please pick a preset:
> Default ([Vue 2] babel, eslint)
  Default (Vue 3) ([Vue 3] babel, eslint)
  Manually select features

Pomocí šipek na klávesnici přejděte dolů a vyberte možnost "Manually select features". Zobrazí se nám tato nabídka:

? Please pick a preset: Manually select features
? Check the features needed for your project:
>(*) Choose Vue version
 (*) Babel
 ( ) TypeScript
 ( ) Progressive Web App (PWA) Support
 ( ) Router
 ( ) Vuex
 ( ) CSS Pre-processors
 (*) Linter / Formatter
 ( ) Unit Testing
 ( ) E2E Testing

Ujistěte se, že máme 3 hvězdičky na následujících položkách. Následně vše potvrdíme klávesou Enter. Po stisknutí vybereme tyto možnosti:

  • Choose a version of Vue.js that you want to start the project with
    • Vybereme 3.x (Preview) a potvrdíme klávesou Enter
  • Pick a linter / formatter config: (Use arrow keys)
    • Potvrdíme ESLint with error prevention only
  • Pick additional lint features: (Press space> to select, a> to toggle all, i to invert selection)
    • Potvrdíme Lint on save
  • Where do you prefer placing config for Babel, ESLint, etc.? (Use arrow keys)
    • Potvrdíme In dedicated config files
  • Save this as a preset for future projects? (y/N)
    • Nyní si můžete tuto konfiguraci uložit pro budoucí použití. Pokud chcete, zadejte "y" a potvrďte. Následně zadejte název konfigurace. V opačném případě zadáme "n" a potvrdíme.

Nyní se spustí instalace Vue.

Ačkoliv budeme potřebovat i routování, nebudeme ho nyní vybírat. Router si nainstalujeme samostatně později :)

Spuštění projektu

Nyní můžeme projekt spustit pomocí příkazů:

cd client
npm run serve

Ve webovém prohlížeči zadáme adresu http://localhost:8080/. Prohlížeč nám zobrazí úvodní stránku aplikace, kterou nám automaticky vygeneroval @vue/cli, neboli příkazový řádek Vue. Domovská obrazovka bude vypadat nějak takto:

Vue

Struktura projektu

V našem textovém editoru bychom měli vidět následující strukturu souborů nového projektu:

client/
├───node_modules/
│    └─ xx adresářů
├───public/
│    ├─ favicon.ico
│    └─ index.html
├───src/
│   ├───assets/
│   │     └─ logo.png
│   ├───components/
│   │     └─ HelloWorld.vue
│   ├─ App.vue
│   └─ main.js
├─ .browserslistrc
├─ .eslintrc.js
├─ .gitignore
├─ babel.config.js
├─ package.json
├─ package-lock.json
└─ README.md

Nejprve věnujme pozornost souboru index.html v adresáři public/. Všimněte si, že Vue pro nás předdefinoval tag <noscript>, která se zobrazí uživatelům, kteří nemají ve svém prohlížeči povolený JavaScript. Zprávu v tagu <noscript> můžeme samozřejmě libovolně upravit.

Dále si v tomto souboru můžeme všimnout, že byl automaticky vytvořen element <div id="app">. Tento prvek představuje tělo naší aplikace. Budou do něj vloženy všechny komponenty, které do aplikace napíšeme.

Adresář src/ je místo, kde budeme psát náš kód, jako jsme to dělali doposud.

Adresář src/components/ představuje místo, kam budeme ukládat jednotlivé komponenty Vue. Prozatím obsahuje automaticky generovanou komponentu HelloWorld.vue.

Další důležitý soubor je App.vue, který byl vygenerován v adresáři src/. Toto je základní kořenová komponenta naší aplikace, kterou upravíme v další lekci.

V neposlední řadě se podíváme na soubor main.js, který najdeme také v adresáři src/:

import { createApp } from 'vue'
import App from './App.vue'

createApp(App).mount('#app')

Soubor importuje metodu createApp() z balíku Vue a základní kořenovou komponentu App z balíku App.vue. Spuštěním metody createApp() se pak vytvoří aplikace Vue a komponenta App.vue se přiřadí k prvku <div id="app">, který byl vytvořen v souboru index.html.

V další lekci, Databázový klient ve Vue - Bootstrap a komponenty, si nainstalujeme potřebné balíčky pro frontend a vysvětlíme si jednotlivé komponenty.


 

Předchozí článek
Jednoduchá kalkulačka ve Vue
Všechny články v sekci
Vue
Přeskočit článek
(nedoporučujeme)
Databázový klient ve Vue - Bootstrap a komponenty
Článek pro vás napsal Samuel Hél
Avatar
Uživatelské hodnocení:
15 hlasů
Autor se věnuje hlavně programování, nejvíce z oblasti webových technologií, dělá občasné video edity ze svých dovolených. Má rád memes, svou gf a elektroniku
Aktivity