X

NodeJs – Modulok

Egy korábbi post-ban bemutattam, hogy mi is a NodeJs és hogyan kell telepíteni, valamint túl vagyunk az első „Hello World!” programunkon is. A mostani, rövid kis post-ban megnézzük, hogy hogyan lehet modulokhoz jutni és használni őket. Nem is húzom az időt, lássunk is hozzá!

A NodeJs alapértelmezetten is rendelkezik beépített modulokkal. Nem is eggyel. A legutóbbi post-ban is láthattunk példát már rá (http), de nem tértem ki rá részletesen. Ez alapján elkülöníthetjük a dolgot két részre: belső, beépített (core) modulok és külső, letölthető, modulok, melyek általában mások által fejlesztett, úgynevezett 3rd party modulok.

Mire jó?

A modulok tulajdonképpen nem mások, mint újra és újra felhasználható függvénykönyvtárak. Egy elkülönített kódblokk, mely univerzálisan alkalmazható más alkalmazásokban.

Nézzünk egy egyszerű példát! tegyük fel, hogy írunk egy matematikai modult, mely tartalmaz pár olyan függvényt, melyre később is szükségünk lesz. Legyen ez a math.js file, amit hozzunk is létre a következő tartalommal:

var PI = Math.PI;

exports.korTerulet = function(sugar)  {
  return sugar * sugar * PI;
};

exports.teglalapTerulet = function(a, b)  {
  return a * b;
};

Ez a matek modulunk, amivel tudunk kör, illetve téglalap területet számolni. Most próbáljuk meg felhasználni. Hozzunk létre egy test03.js file-t és a tartalma legyen a következő:

var matek = require('./math.js');
var sugar = 3;
console.log('A(z) ' + sugar + ' egység sugarú kör területe: '+matek.korTerulet(sugar));

Futtassuk le! A konzolban adjuk ki a következő parancsot:

$ node test03.js

Ha mindent jól csináltunk, megkapjuk a fenti szöveget, behelyettesítve az értékkel és a végeredménnyel.

Core modules

Számos modullal rendelkezik alapból a rendszer, melyek nagyon hasznosak és már ezekkel is egy végtelenhez közelítő számot kapunk amely a lehetőségeinket számszerűsíti a segítségükkel. Ha valaki a konkrét, teljes listát szeretné látni, akkor nem kell mást tennie, mint a forrás lib/ könyvtárába belenézni és máris látni fogja a terjedelmes listát.

Én most csak párat emelnék ki közülük, abc sorrendben: child_process, cluster, crypto, dns, domain, fs, http, net, os, stream, zlib.

Ezekből is látszik, hogy már alapból mennyire sokrétű az rendszerünk. A modulokra való hivatkozás a require() függvénnyel történni, melynek paraméterként a modul nevét kell megadnunk. Ez egy core modul esetén a következőképpen néz ki:

require('http')

Fontos tudni, hogy amennyiben egy saját modult készítünk és annak is valamilyen oknál fogva ugyan ezt a http nevet adnánk, akkor is a beépített, „gyári” modul fog betöltődni. Tehát jobb tisztában lenni azzal, hogy mik a core modul nevek, mielőtt elnevezzük a sajátunkat.

Külső modulok

Amennyiben nem beépített modult szeretnénk betölteni, úgy szükség van a modul elérési útjára. Ez a require() függvényt tartalmazó file-hoz viszonyított relatív útvonal. Tehát ha az alkalmazásunkkal egy könyvtárban van a modul file is, akkor elegendő a ./ útvonal. De természetesen lehetőségünk van a teljes, úgynevezett abszolút útvonalat is megadhatunk, mint például  /home/foo/bar.js .

Fontos, hogy amennyiben nem adunk meg semmilyen útvonalat, csak a modul nevét, a rendszer először belső modultként fogja keresni, majd ha nem talál ilyen nevűt, akkor a könyvtárban lévő node_modules alkönyvtárat fogja keresni és abban kezd el kutatni a file után.

Ha a fent említett lehetőségek közül egyik sem jár sikerrel, akkor egy MODULE_NOT_FOUND hibával tér vissza a függvény a code property-ben.

Amennyiben többet is szeretnénk tudni a modulkezelésről, látogassuk meg a Node hivatalos API kézikönyv oldalát a témával kapcsolatban: http://nodejs.org/api/modules.html

 

Hasonló cikkek

MucsaPlex, avagy Plex szerver RaspberryPi 3-on Csak a kíváncsiság kedvéért összeraktam egy rPi3-as Plex szervert, mivel kíváncsi voltam, hogy hogyan muzsikál egy ilyen jószág a rettegett erőforrási...
RVM telepítés OS X-en Telepíteni akartam az RVM-et Mac-en, de állandóan elfüstölt már az elején, amikor a MacPort-ot akarta felrakni. A hiba így nézett ki: rvm 1.25.16 (st...
APE Server – 1. rész: A Majom leszállt Tegnap Friday afternoon Project keretén belül elkezdtem feltelepíteni egy APE szervert. Már rég óta tervezem ezt, de eddig még nem jutott rá időm sajn...
NodeJs + Express és HTTPS Előfordulhat, hogy szükségünk van egy SSL-es webszerverre a NodeJs-es környezetünkben. Ugyebár webszervert Express-szel a legegyszerűbb készíteni, ami...
Sas Sam:
Related Post