Module Path trong NodeJS

Thông thường chúng ta có các thao tác xử lý đường dẫn  file và tên file như lấy đường dẫn trỏ tới thư mục, lấy tên file trong đường dẫn, lấy phần mở rộng của file, ... tất cả các thao tác này trong Javascript không hỗ trợ, vì vậy bạn sẽ phải tự viết. Đấy là nói về Javascript, còn NodeJS thì những thao tác đó thường xuyên được sử dụng, vì vậy NodeJS đã cung cấp cho chung ta một module rất tiện lợi đó là module Path.

Trước khi sử dụng module này thì phải chắc chắn là bạn đã require nó vào nhé.

var path = require('path');

Sau đây là những hàm được hỗ trợ trong module Path.

1. Lấy tên file - path.basename(path[, ext])

Hàm path.basename() dùng để lấy tên file. Nó có hai cách sử dụng như sau:

path.basename('public/image/freetuts.png'); // Kết quả freetuts.png
path.basename('public/image/freetuts.png', '.png'); // Kết quả freetuts

2. Ký tự phân cách giữa các đường dẫn - path.delimiter

Mỗi hệ điều hành có một ký tự phân cách giữa các đường dẫn khác nhau. Ví dụ với Window thì sử dụng ký tự ; , trên Nix thì dùng ký tự :. Vì vậy module Path cung cấp một thuộc tính lưu trữ giá trị này và dù bạn chạy ở hệ điều hành nào thì chương trình vẫn hoạt động tốt.

console.log(path.delimiter); // Trên Window: ;
console.log(path.delimiter); // Trên Linux: :

3. Lấy đường dẫn folder của file - path.dirname(path)

Hàm này giúp lấy đường dẫn tới folder của file.

path.dirname('/public/demo/freetuts/logo.png'); 
// Kết quả: public/demo/freetuts

4. Lấy phần đuôi mở rộng của file - path.extname(path)

Lấy giá trị đằng sau dấu chấm của file, tuy nhiên có một số trường hợp đặc biệt (xem ví dụ).

path.extname('freetuts.html')
// Kết quả '.html'

path.extname('freetuts.coffee.md')
// Kết quả '.md'

path.extname('freetuts.')
// Kết quả '.'

path.extname('freetuts')
// Kết quả ''

path.extname('.freetuts')
// Kết quả ''

5. Lấy Path String từ một Object - path.format(object)

Hàm này sẽ return về một đường dẫn với giá trị được nối bởi các phần tử của Object. Object sẽ có 5 phần tử gồm:

  • root
  • dir
  • base
  • ext
  • name

Chúng ta sẽ có một số trường hợp như sau.

Trường hợp 1: Nếu dir và base được cung cấp thì kết quả sẽ trả về là dir + base.

path.format({
    dir: '/home/user/dir',
    base: 'file.txt'
});
// Kết quả '/home/user/dir/file.txt'

Trường hợp 2root sẽ được sử dụng nếu không có dir 

path.format({
    root: '/',
    base: 'file.txt'
});
// Kết quả '/file.txt'

Trường hợp 3: name + ext được sử dụng nếu không có base

path.format({
    dir: '/',
    name: 'file',
    ext: '.txt'
});
// Kết quả '/file.txt'

Trường hợp 4: Nếu dir và root đều được sử dụng thì chúng sẽ được kết hợp với nhau.

path.format({
    root : "C:\\",
    dir : "C:\\path\\dir",
    base : "file.txt",
    ext : ".txt",
    name : "file"
});
// Kết quả 'C:\\path\\dir\\file.txt'

Trường hợp 5: Nếu chỉ có base thôi thì sẽ return về base.

path.format({
    base: 'file.txt'
});
// Kết quả 'file.txt'

6. Kiểm tra đường dẫn tuyệt đối - path.isAbsolute(path)

Hàm này kiểm tra path có phải là một đường dẫn tuyệt đối hay không.

Trên *nix:

path.isAbsolute('/foo/bar'); // true
path.isAbsolute('/baz/..') ; // true
path.isAbsolute('qux/') ;    // false
path.isAbsolute('.') ;       // false

Trên Window:

path.isAbsolute('//server');  // true
path.isAbsolute('C:/foo/..'); // true
path.isAbsolute('bar\\baz');  // false
path.isAbsolute('.');         // false

7. Nối các tham số thành một đường dẫn - path.join([path1][, path2][, ...])

Hàm này se nối các tham số truyền vào thành một đường dẫn.

path.join('/foo', 'bar', 'baz/asdf', 'quux', '..')
// Kết quả '/foo/bar/baz/asdf

8. Làm sạch đường dẫn - path.normalize(path)

Hàm này sẽ làm sạch đường dẫn truyền vào.

path.normalize('/foo/bar//baz/asdf/quux/..');
// Kết quả '/foo/bar/baz/asdf'

9. Chuyển path thành một object - path.parse(path)

Hàm này có chức năng ngược với hàm path.format.

Trên *nix:

path.parse('/home/user/dir/file.txt');
// Kết quả
// {
//    root : "/",
//    dir : "/home/user/dir",
//    base : "file.txt",
//    ext : ".txt",
//    name : "file"
// }

Trên Window:

path.parse('C:\\path\\dir\\index.html');
// Kết quả
// {
//    root : "C:\\",
//    dir : "C:\\path\\dir",
//    base : "index.html",
//    ext : ".html",
//    name : "index"
// }

10: Ký tự phân cách - path.sep

Tham số này chứa ký tự phân cách tùy vào mỗi hệ điều hành sẽ có giá trị khác nhau.

Trên *nix:

'foo/bar/baz'.split(path.sep);
// returns ['foo', 'bar', 'baz']

Trên Window:

'foo\\bar\\baz'.split(path.sep);
// returns ['foo', 'bar', 'baz']

11. Chạy một tập lệnh di chuyển cd - path.resolve([from ...], to)

Giống như bạn đang sử dụng cmd.

Ví dụ:

path.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile');

Tương đương với:

cd foo/bar
cd /tmp/file/
cd ..
cd a/../subfile
pwd

Trên là tổng hợp 11 hàm và thuộc tính của module path trong NodeJS, các hàm và thuộc tính này thường được hay sử dụng để xử lý đường dẫn của file

Hãy để lại link bài viết gốc khi chia sẻ bài viết này, mình sẽ report DMCA với những website lấy nội dung mà không để nguồn hoặc copy bài với số lượng lớn.

Nguồn: freetuts.net

Profile photo of adminTheHalfHeart

TheHalfHeart

Có sở thích viết tuts nên đã từng tham gia viết ở một số diễn đàn, đến năm 2014 mới có điều kiện sáng lập ra freetuts.net. Sinh năm 90 và có 1 vợ 2 con, thích ca hát và lập trình.

ĐĂNG BÌNH LUẬN: Đăng câu hỏi trên Group Facebook để được hỗ trợ nhanh nhất.