Node.JS 7: Modul Path

V minulém díle jsme se zaměřili na asynchronní a synchronní uspořádání kódu v kombinaci s použitím modulu fs, který nám umožňoval editovat soubory. Dnes se podíváme na modul path, který umožňuje výpis změněných cest k souboru.

Path.basename()

Metodu path.basename() lze využít při zjišťování současného názvu souboru či složky, ve které se soubor nachází. Např.:

const path = require('path')
const mojePath = path.basename(__filename);
console.log(mojePath);

Konzole mi vypíše název souboru, v mém případě tedy soubor app.js:

app.js

Na podobném principu funguje i obdoba vlastnosti __filename - __dirname, která nám umožňuje zjistit název složky, ve které se soubor nachází (dir z anglického directory - tedy složka):

Před slovem filename se nacházejí dvě podtržítka - s mezerami by se název psal takto: _ _ filename.

const path = require('path')
const mojePath = path.basename(__dirname);
console.log(mojePath);

Výpis z konzole závisí na mém vlastním názvu složky, v mém případě se soubor app.js nachází ve složce projekt1:

projekt1

Mezi další využití path.basename() můžeme zařadit i vyjmutí koncového souboru z absolutní cesty, která k němu směřuje:

const path = require('path')
const mojePath = path.basename('C:\\Users\\ProgramujuSAran\\WebstormProjects\\projekt1\\app.js');
console.log(mojePath);

Výsledný výpis v konzoli vypadá shodně jako v případě, kdy měla metoda path.basename() argument __filename:

app.js

Pokud z určitého důvodu potřebujeme odstranit příponu souboru, uvedeme její hodnotu jako druhý argument:

const path = require('path')
const mojePath = path.basename('C:\\Users\\ProgramujuSAran\\WebstormProjects\\projekt1\\app.js', '.js');
console.log(mojePath);

Následuje výpis z konzole:

app

Pokud bychom potřebovali odstranit odlišnou příponu - např. .html, budeme postupovat stejným způsobem, nicméně přípona musí být obsažena i v upravovaném souboru:

const path = require('path')
const mojePath = path.basename('C:\\Users\\ProgramujuSAran\\WebstormProjects\\projekt1\\index.html', '.html');
console.log(mojePath);

Path.join()

Metoda path.join() spojí všechny dostupné části cesty k vytvoření nové. Řekněme, že potřebujeme vytvořit cestu, která se bude lišit u každého uživatele, poněvadž díky modulu fs bude mít každý z uživatelů odlišnou složku se svým vlastním jménem:

const path = require('path')
let uzivJmeno = 'Karel';
let d = new Date();
let rok = d.getFullYear().toString();
const join = path.join('/users', uzivJmeno, rok, 'index.html');
console.log(join);

Konzole nám vypíše celkovou cestu k souboru index.html:

\users\Karel\2020\index.html

Windows doporučuje upravit metodu basename() na path.win32.basename. Pokud bychom měli v úmyslu vytvořit cestu mezi soubory jak z Linuxu tak i z Windowsu, nabízí se další možná varianta path.posix.basename().

Metoda join() pro nás představuje obzvláště důležitou funkčnost při tvorbě dynamických cest (často založených na aktivitě uživatelů).