Vue-CLI
A Vue CLI (Command Line Interface) egy parancssor alapú interfész, melyen keresztül menedzsenletjük a Vuejs környezetben történő fejlesztéseket. Lehetőséget ad a projektek és különböző könyvtárak menedzselésére [5]. Amikor élesre állítjuk az alkalmazásunkat, az összes JavaScript fájlunkat, a CSS stílus fájlokat és az importált könyvtárakat a Webpack egybecsomagolja és optimalizálja számunkra a megfelelő működés érdekében. Továbbá a projektek megvalósításának metodikájának sem szab határt, ugyanazt a projektet meg tudjuk csinálni vue komponensek, TypeScript, SCSS, Pug, a legfrissebb verziójú ECMAScript, stb. Fejlesztői üzemmódban akárhányszor végzünk mentést, a változtatások azonnal lefordítódnak és megjelennek a képernyőnkön. Hogy is működik? Egyenlőre szorítkozzunk a jelenlegi legfrissebb verziójával (3.x.). Egy projekt létrehozásán keresztül bemutatjuk a tényleges működését. Az első lépésként feltelepítjük a Vue CLI legfrissebb változatát. A telepítés minimum követelménye a Node.js 8.9-es verziója és az npm. A feltelepítés után avue create
paranccsal új projektet kezdhetünk. Ezt követően választhatunk a gyors (előre konfigurált) és lassú (minden egyes (általunk vagy mások által írt) bővítményt magunk választhatunk ki) létrehozás között. A saját konfigurácionkat mi magunk is elmenthetjük, hogy később újra felhasználhassuk (mint sablon). Akármelyik lehetőséget választottuk, máris megkezdődhet a fejlesztés és véglegesítés. Ha szükségét látjuk, a projektünk funkcionalitásának tárházát kiegészíthetjük utólag is általunk, vagy mások által készített bővítményekkel. Végül indítsuk el az alkalmazást fejlesztői módban az npm run serve
paranccsal.
![](../VUECLI.jpg)
![](../tizenotodik.jpg)
Nézzünk rá az újonnan telepített projektünk könyvtár struktúrájára:
> dist // az éles üzemmódhoz lefordított html, javascript és css fájlok
> node modules // az összes telepített könyvtár ebben a mappában helyezkedik el
> public // az összes olyan fájl, amit a webpack nem dolgoz fel,
// ebben a mappában helyezkedik el
> src // az alkalmazás forráskódja ebben a mappában helyezkedik el
|_
> assets // az alkalmazással kapcsolatos képek, stíluselemek,
// stb ebben a mappában helyezkednek el
> components // a forráskódhoz tartozó komponensek ebben
// a mappában helyezkednek el
> plugins // a forráskódhoz tartozó bővítmények ebben a mappában helyezkednek el
> views // több oldalas applikáció esetén a különálló
// oldalak/nézetek ebben a mappában helyezkednek el
App.vue // a forráskód gyökér komponense, ami összeköti
// a többi különálló komponenst
main.js // a fájl, ami kezdeményezi az alkalmazás lerenderelését
// és betöltődését a DOM-ba
router.js // egyoldalas alkalmazások (single page application)
// esetén a különálló oldalak/nézetek (mint komponensek)
// regisztrálásáért és váltásáért felel
store.js // a Vuex keretrendszer egyik fontos eleme,
// ahol definiálni és szinkronizálni lehet olyan változókat,
// melyek értékeit az összes regisztrált komponens között
// szabadon meg lehet osztani
.gitignore // olyan fájl, amiben definiálhatunk egy listát, melyeket
// nem szeretnénk ha felkerülnének a verziókezelő színpadára
package.json // olyan fájl, amiben fel van jegyezve minden fontos
// információ ami a projektünkkel kapcsolatos
// (projekt neve, verziója, leírása, tesztelői és
// éles üzemmóddal kapcsolatos parancsok definiálása,
// kulcsszavak, szerző, licensz, repozatórium neve,
// a telepített könyvtárak neve és verziószáma
package.lock.json
babel.config.js
Nézzünk meg, hogy az alkalmazás hogyan is töltődik be. Elsőként azt láthatjuk, hogy a szükséges "dolgokat" beimportáljuk. Ezt követően a Vue-t lepéldányosítjuk, az argumentumába belekerülnek az importált "dolgok" és megmondjuk a Vue-nak, hogy renderelje le az alkalmazást és töltse be a DOM-ba konkrétan (alapértelmezetten) a ./public/index.html
fájlban a <div id="app"></div>
-be. Az alatta megfogalmazott <!-- built files will be auto injected -->
komment szövege annyit takar, hogy éles üzemmódban (npm run build
) a Webpack összecsomagolja az összes fejlesztő üzemmódban kódolt utasítást. Az így kapott HTML fájlokat bármelyik böngészőben megnyitva azt láthatjuk, hogy már nem helyi hálózatról szolgáltatjuk.
Feltételezhetően már felmerült a kedves olvasókban, hogy mik is lehetnek ezek a .vue
kiterjesztésű fájlok az src
mappában? Nyissunk meg egyet egy kódszerkesztővel és vizsgáljuk meg a felépítését. Azt láthatjuk, hogy három részre tagolódik az implementált kód: <template></template>
, <script></script>
és <style></style>
. A színfalak mögött a Webpack átalakítja ezen a szekciókat JavaScript kóddá, majd exportálja. Az előző példára építkezve bővítsük ki a projektünket komponensek létrehozásával úgy, hogy mindegy komponens egy-egy nézetet valósítson meg és minden egyes nézetet útvonalakkal érjük el. Ezeket a projekt gyökérkönyvtárában található main.js
fájlba kell importálni és regisztrálni (globálisan) a Vue.component()
metódus segítségével. Az általunk (vagy mások által) definiált komponenseket a következőképpen hívhatjuk meg: <komponens_neve></komponens_neve>
, ahol komponens_neve
a komponens neve, amivel regisztráltuk. Ebben az esetben az útvonalak kezelését és a nézetek lerendelését nem a szerver intézi, csak a bejövő kéréseket igyekszik teljesíteni és az alkalmazást reprezentáló index.html
fájlt szolgáltatni.
Első lépésként telepítsük fel a vue-router könyvtárat (npm install --save vue-router
), majd importáljuk be a main.js fájlba. Deklaráljunk egy tömbnyi objektumot, ahol egy-egy objektum (path
tulajdonsággal) egy-egy útvonalat reprezentáljon. Az útvonalak alatt az URL DOMAIN utáni részét kell érteni. Ezt követően társítsuk össze a komponenseket az útvonalakkal. Példányosítsuk le a Vuerouter-t a konstruktor függvény meghívásával (new Vuerouter()
). A konstruktor függvény vár egy objektumot routes
tulajdonsággal. Adjuk át neki a korábban deklarált útvonalak listáját tartalmazó tömböt. Végezetül adjuk át paraméterként a lepéldányosított Vue verziója számára. A soron következő feladatunk az egyes oldalak megjenenítése egy általunk kiválasztott (keretként funkcionáló) oldalon. Ezt az oldalt ezesetben azonosítsuk az App.vue
fájllal és a <template></template>
-ben deklaráljuk az alábbiakat: <router-view></router-view>
. A példa itt próbálható ki.
Irodalomjegyzék
[1] | Vue.js core team. Vue.js: The Progressive JavaScript Framework. https://vuejs.org, Legutóbb megtekintve: 2019. április 22. |
[2] | Vue.js core team. API, Global Config, directive. https://vuex.vuejs.org/vuex.png, Legutóbb megtekintve: 2019. április 22. |
[3] | Vue.js core team. API, Global Config, computed. https://vuejs.org/v2/api/#computed, Legutóbb megtekintve: 2019. április 22. |
[4] | Vue.js core team. API, Global Config, components. https://vuejs.org/v2/api/#components, Legutóbb megtekintve: 2019. április 22. |
[5] | Vue.js core team. Vue-CLI. https://cli.vuejs.org/guide/creating-a-project.html#vue-create, Legutóbb megtekintve: 2019. április 22. |
[6] | Vue.js core team. Vue-router. https://router.vuejs.org/guide/#html, Legutóbb megtekintve: 2019. április 22. |
[7] | Vue.js core team. Render Functions and JSX. https://vuejs.org/v2/guide/render-function.html, Legutóbb megtekintve: 2019. április 22. |
[8] | w3schools core team. JavaScript RegExp Reference. https://www.w3schools.com/jsref/jsref_obj_regexp.asp, Legutóbb megtekintve: 2019. április 22. |
[9] | Google Chrome DevTools core team. Chrome DevTools. https://developers.google.com/web/tools/chrome-devtools, Legutóbb megtekintve: 2019. április 22. |
[10] | Node.js core team. Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. https://nodejs.org/en/, Legutóbb megtekintve: 2019. április 22. |
[11] | NPMJS core team. NPMJS. https://www.npmjs.com, Legutóbb megtekintve: 2019. április 22. |
[12] | ExpressJS core team. Express Fast, unopinionated, minimalist web framework for Node.js. https://expressjs.com, Legutóbb megtekintve: 2019. április 22. |
[13] | EJS core team. EJS: Embedded JavaScript templating. https://ejs.co, Legutóbb megtekintve: 2019. április 22. |
[14] | Olga Filipova. Learning Vue.js 2. Packt Publishing Ltd., Livery Place, 35 Livery Street, Birmingham, B3 2PB, UK, 3, 2016. |
[15] | E.F. Codd. A relational Model of Data for Large Shared Data Banks. Communications of the ACM, 13 (6) 1970. |
[16] | Papp Edit. Adatbáziskezelés. Booklands 2000 Könyvkiadó Kft., 5600 Békéscsaba, Dr. Becsey Oszkár u. 42., 1, 2004. |
[17] | Nemzeti Szakképzési és Felnőttképzési hivatal. Szoftverfejlesztő tanfolyam. https://www.nive.hu, Legutóbb megtekintve: 2019. április 22. |
[18] | JavaScript.info core team. JavaScript.info. https://javascript.info/promise-basics, Legutóbb megtekintve: 2019. április 22. |
[19] | Craig Buckler. Sitepoint (JavaScript) - Understanding ES6 Modules. https://www.sitepoint.com/understanding-es6-modules/, Legutóbb megtekintve: 2019. április 22. |