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ů).