Post hidden from Hashnode
Posts can be hidden from Hashnode network for various reasons. Contact the moderators for more details.
Node.JS 3: Vlastní moduly
V minulé epizodě jsme si ukázali, jak založit funkční Node.JS projekt. Dneska si ukážeme, jak rozvětvit naši aplikaci podle oblíbeného vývojářského postupu KISS (jedna z verzí výkladu této zkratky je "Keep it short and simple.") pomocí modul.
Moduly (anglicky Modules) se v mnohém podobají knihovnám v JS. Každý soubor je navíc brán jako samostatný modul.
Abychom mohli zařadit moduly do naší aplikace, potřebujeme funkci require(jmenomodulu). Může být použita k importování
- vlastních modulů
- vestavěných modulů (např.: http)
- externích modulů nainstalovaných pomocí npm.
Tvorba vlastního modulu
Můžeme vytvořit vlastní modul a potom jej jinde v našem projektu exportovat. Rozdíl mezi modulem a obyčejným javascriptovým souborem je schopnost vyexportovat z modulu to, co potřebujeme (proměnné, objekty, funkce, vlastnosti (properties) atd.)
Zkusme vytvořit například modul, který pro nás vypočítá objem koule a krychle.
Vytvoříme soubor modulu, já si jej pojmenuji např. mujprvnimodul.js, nadeklarujeme si v něm dvě funkce:
exports.koule = function (r) {
return 4/3 * Math.PI * Math.pow(r, 3); // funkce Math.pow umocňuje poloměr r na třetí
};
exports.krychle = function (a) {
return Math.pow(a,3);
};
Používáme klíčové slovo exports., díky kterému je funkce dostupná i mimo soubor mujprvnimodul.js.
Nyní modul využijeme v hlavním souboru index.js. Vytvoříme si proměnnou objem, jako parametr funkce dosadím např. 4 - to je tedy poloměr koule a hrana krychle. Vypíšeme si vše do konzole pomocí volání console.log:
const objem = require('./mujprvnimodul');
console.log("Objem koule je " + objem.koule(4)
+ " metrů krychlových a objem krychle je "
+ objem.krychle(4) + " metrů krychlových.");
V konzoli se nám zobrazí sdělení:
Objem koule je 268.082573106329 metrů krychlových a objem krychle je 64 metrů krychlových.
Projekt najdete na Githubu ve složce Node.JS - mujprvnimodul.js a index.js.