Poznajemy podstawy node.js zaczynając od magicznych stałych __filename i __dirname oraz prostego modułu path. Do dzieła.
Nasz pierwszy skrypt node będzie wyglądać tak:
var filename = __filename;
var dirname = __dirname;
console.log(`Filename: ${filename}`);
// C:\Users\abc\Desktop\blog\node1\magic1.js
console.log(`Dirname: ${dirname}`);
// C:\Users\abc\Desktop\blog\node1
Nietrudno domyślić się, co on robi. Teraz zaimportujmy moduł path i wykorzystajmy funkcję isAbsolute:
var path = require('path');
var filename = __filename;
var dirname = __dirname;
console.log(`Filename: ${filename}`);
// C:\Users\abc\Desktop\blog\node1\magic1.js
console.log(`Absolute: ${path.isAbsolute(filename)}`);
// Absolute: true
console.log(`Dirname: ${dirname}`);
// C:\Users\abc\Desktop\blog\node1
console.log(`Absolute: ${path.isAbsolute(dirname)}`);
// Absolute: true
Teraz pokorzystajmy jeszcze z niego:
var path = require('path');
var filename = __filename;
var dirname = path.dirname(__filename);
var basename = path.basename(__filename);
var extension = path.extname(__filename);
console.log(`Filename: ${filename}`);
//Filename: C:\Users\abc\Desktop\blog\node1\magic1.js
console.log(`Dirname: ${dirname}`);
//Dirname: C:\Users\abc\Desktop\blog\node1
console.log(`Basename: ${basename}`);
//Basename: magic1.js
console.log(`Extension: ${extension}`);
//Extension: .js
Wyobraźmy sobie, że mamy folder files i tak jakieś pliki. Napiszemy sobie funkcję file do łapania ścieżek do nich:
var path = require('path');
function file(filename) {
return path.join(__dirname, "files", filename);
}
console.log(file("lorem.txt"));
//C:\Users\abc\Desktop\blog\node1\files\lorem.txt
console.log(file("index.html"));
//C:\Users\abc\Desktop\blog\node1\files\index.html
Łączenie ścieżek to rzecz obecna we wszystkich językach programowania. Znając path nie będziemy mieli w node z tym problemów.