Kihagyás

Alapok

Az eddigi ismereteink alapján már tudjuk, hogy a Node.js egy szerveroldali JavaScript környezet, amely lehetővé teszi a JavaScript futtatását a számítógépünkön, valamint, hogy az NVM segítségével könnyedén telepíthetünk, törölhetünk és válthatunk Node.js verziókat. Hozzuk létre az első Node.js alkalmazásunkat!

IDE

Az első lépés, hogy válasszunk egy IDE-t (Integrated Development Environment), amelyben a Node.js alkalmazásunkat szeretnénk fejleszteni. Az IDE kiválasztása szubjektív, azonban a legnépszerűbbek közé tartozik a Visual Studio Code, az Atom, a Sublime Text, a WebStorm, valamint a Vim és az Emacs.

A kurzus során a Visual Studio Code-ot fogjuk használni, mivel ingyenes, könnyen testreszabható, és számos kiegészítővel bővíthető.

Projekt létrehozása

Hozzunk létre egy új mappát, majd nyissuk meg azt a Visual Studio Code-ban.

Verzió választás

Indítsunk egy terminált, majd válasszuk ki (szükség esetén telepítsük) az általunk használni kívánt Node.js verziót.

nvm use 18.0.0

Projekt inicializálása

Hozzunk létre egy új Node.js projektet a következő paranccsal:

npm init -y

Ekkor létre fog jönni egy package.json fájl, amely tartalmazza a projektünk adatait.

package.json

A létrejött package.json fájlban találhatóak a projektünk adatai, például a neve, a verziója, a leírása, a fő fájlja, a scriptjei, a kulcsszavak, az írója, valamint a licensze. Mindezen túl a package.json fájlban találhatóak a függőségek is, amelyeket a projektünk használ.

Példa

package.json
{
    "name": "demo", //(1)
    "version": "1.0.0", //(2)
    "description": "", //(3)
    "main": "index.js", //(4)
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1" //(5)
    },
    "keywords": [], //(6)
    "author": "", //(7)
    "license": "ISC" //(8)
}
  1. Ez a mező határozza meg a projekt nevét. A példa esetében a projekt neve "demo". A névnek egyedi kell legyen, különösen ha a projektet a npm csomagtárba szeretnéd feltölteni.
  2. Ez a projekt verzióját jelöli. A verziószám a szemantikus verziózás szabályait követi, ami általában major.minor.patch formátumban van megadva. A "1.0.0" azt jelenti, hogy ez a projekt első stabil verziója.
  3. Itt lehet röviden leírni a projektet, mi a célja, mire használható. Jelenleg ez üresen van hagyva.
  4. Ez a beállítás határozza meg, hogy melyik fájl legyen a belépési pont a projekt számára, vagyis melyik fájlt fogja először futtatni a Node.js, amikor a projektet betöltöd. Az "index.js" fájl ebben az esetben az alapértelmezett belépési pont.
  5. A scripts rész alatt különféle parancsokat adhatsz meg, amelyeket a projekt különböző feladatainak elvégzésére használhatsz. Ebben a példában a "test" script csak annyit tesz, hogy kiír egy hibaüzenetet, és kilép hibakóddal. Ez csak egy helykitöltő példa, amit általában később felülírnak egy valódi teszt parancsra.
  6. Itt egy kulcsszavakból álló tömb szerepelhet, amelyek leírják a projektet, és segítenek abban, hogy mások könnyebben megtalálják a csomagot az npm keresőjében. Jelenleg ez üresen van hagyva.
  7. Az a mező, ahol a projekt szerzőjének nevét lehet megadni. Ez üresen van hagyva.
  8. Ez a mező jelzi a projekt licencét. Az "ISC" licenc egy rövid és egyszerű nyílt forráskódú licenc. Ha más licencet használsz, itt kell megadni.

Megjegyzés

A most létrejött fájl alapvetően egy minimális package.json, amely egy új Node.js projekt kezdeti beállításait tartalmazza. Ahogy a projekt fejlődik, további mezők és beállítások adhatók hozzá, például függőségek (dependencies), fejlesztési függőségek (devDependencies), vagy további szkriptek.

engines

Ez a mező meghatározza, hogy milyen Node.js verziót támogat a projektünk, ez segít abban, hogy biztosítsuk a megfelelő Node.js verzió használatát. Ezt a beállítást kézzel kell hozzáadnunk a projektünkhöz.

Példa

package.json
{
    "name": "demo",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "engines": {
        "node": ">=18.0.0"
    },
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
    },
    "keywords": [],
    "author": "",
    "license": "ISC"
}

Ebben a példában a engines mező azt mondja, hogy a projekt legalább a 18.0.0 verziójú Node.js-t igényli.

Operátorok
  • >=: Legalább a megadott verzió szükséges. Példa: "node": ">=12.0.0"
  • <=: Legfeljebb a megadott verzió szükséges. Példa: "node": "<=14.0.0"
  • >: Szigorúan nagyobb verzió szükséges. Példa: "node": ">10.0.0"
  • <: Szigorúan kisebb verzió szükséges. Példa: "node": "<16.0.0"
  • ^: Meghatározza, hogy a verzió kompatibilis legyen a megadott főverzióval. Példa: "node": "^12.0.0"
  • ~: Meghatározza, hogy a verzió kompatibilis legyen a megadott kisebb verzióval. Példa: "node": "~12.0.0"
  • Pontos verzió megadása: Csak egy adott verziót fogad el. Példa: "node": "12.18.3"

scripts

Ez a rész meghatározza a parancsokat, amelyeket a fejlesztési ciklus során használsz. Például npm start a projekt indítására, vagy npm test a tesztek futtatására.

1
2
3
"scripts": {
    "start": "node index.js"
}

Több script is definiálható, amelyeket a npm run <script> paranccsal futtathatsz.

1
2
3
4
"scripts": {
    "start": "node index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
}

Példa

Készítsünk egy start parancsot, amelyet a következő lépésben tudunk használni.

{
    "name": "demo",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "engines": {
        "node": ">=18.0.0"
    },
    "scripts": {
        "start": "node index.js"
    },
    "keywords": [],
    "author": "",
    "license": "ISC"
}

Fő fájl

A létrejött alkalmazásunkban hozzunk létre egy index.js fájlt, amely tartalmazza az alábbi kódot:

index.js
console.log('Hello, World!');

Alkalmazás futtatása

Az alkalmazást futtatni a node index.js parancs kiadásával tudjuk megtenni vagy a npm start paranccsal, amennyiben a package.json fájlban definiáltuk a start scriptet.

Mivel ezt megtettük az előbb, ezért bátran használhatjuk az új parancsot!

npm start

Konzol kimenet

Hello, World!

Gratulálok! Létrehoztuk az első Node.js alkalmazásunkat, amely kiírja a "Hello, World!" üzenetet a konzolra.