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');
Bài viết này được đăng tại [free tuts .net]
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 2: root 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