path.basename(): Tên file đâu, chỉ điểm ngay!
Nodejs

path.basename(): Tên file đâu, chỉ điểm ngay!

Author

Admin System

@root

Ngày xuất bản

20 Mar, 2026

Lượt xem

1 Lượt

"path.basename()"

Chào các "coder nhí" tương lai của vũ trụ số! Hôm nay, anh Creyt sẽ "khui" một "bí kíp" nhỏ nhưng có võ trong Node.js, giúp các em xử lý đường dẫn file mượt mà như "lướt phím" trên TikTok. "Từ khoá" chúng ta "đào xới" hôm nay chính là path.basename().

1. path.basename() là gì mà "hot" thế?

"Thám tử" path.basename() trong Node.js, nói một cách dễ hiểu, là "chuyên gia" đi "bóc tách" đường dẫn file. Tưởng tượng một cái tên file đầy đủ như C:/Users/Creyt/Documents/bai_tap/nodejs/chu_de_hom_nay.md ấy. Dài ngoằng, lằng nhằng đúng không? path.basename() sẽ "chỉ điểm" ngay cái "tên thật" của file hoặc thư mục cuối cùng trong chuỗi đường dẫn đó, mà không cần quan tâm "họ hàng" hay "địa chỉ nhà" của nó là gì. Nó sẽ "phán" ngay: "À, ông này tên là chu_de_hom_nay.md!". Ngon lành cành đào!

Mục đích "sinh ra" của nó? Đơn giản là để các em có thể dễ dàng lấy ra cái tên file "trần trụi" nhất, phục vụ cho đủ thứ mục đích: hiển thị trên giao diện, đặt tên file mới, hay đơn giản là "đọc vị" xem file đó là file gì mà không cần quan tâm nó nằm ở đâu trong "ma trận" folder.

2. Code Ví Dụ Minh Họa: "Thực chiến" ngay và luôn!

Để dùng path.basename(), các em cần "triệu hồi" module path của Node.js trước nhé:

const path = require('path');

// Case 1: Đường dẫn file cơ bản
let fullPath1 = '/home/user/documents/report.pdf';
let fileName1 = path.basename(fullPath1);
console.log(`Tên file "gốc": ${fileName1}`); // Output: report.pdf

// Case 2: Đường dẫn thư mục (nó vẫn hoạt động)
let folderPath = '/home/user/projects/';
let folderName = path.basename(folderPath);
console.log(`Tên thư mục "gốc": ${folderName}`); // Output: projects

// Case 3: Có "đuôi" mở rộng (extension) nhưng bạn muốn "cắt" nó đi
let fullPath2 = '/var/www/html/index.html';
let fileNameWithoutExt = path.basename(fullPath2, '.html');
console.log(`Tên file không "đuôi": ${fileNameWithoutExt}`); // Output: index

// Case 4: "Đuôi" không khớp với tham số thứ hai
let fullPath3 = '/app/data/image.jpg';
let fileNameWithWrongExt = path.basename(fullPath3, '.png');
console.log(`Tên file với "đuôi" không khớp: ${fileNameWithWrongExt}`); // Output: image.jpg (vẫn giữ nguyên vì không khớp)

// Case 5: Đường dẫn chỉ có tên file
let simpleFile = 'my_photo.jpeg';
let baseSimpleFile = path.basename(simpleFile);
console.log(`Tên file đơn giản: ${baseSimpleFile}`); // Output: my_photo.jpeg

// Case 6: Đường dẫn root
let rootPath = '/';
let baseRoot = path.basename(rootPath);
console.log(`Tên gốc của root: ${baseRoot}`); // Output: '' (chuỗi rỗng)

Các em thấy không? path.basename() "tinh ranh" lắm! Nếu không có tham số thứ hai (ext), nó sẽ trả về cả tên file lẫn đuôi. Còn nếu có extext đó khớp với đuôi của file, nó sẽ "cắt phăng" cái đuôi đó đi, trả về tên file "trần trụi" nhất.

Illustration

3. Mẹo (Best Practices) để "ghi nhớ" và "dùng thực tế"

  • "Nhớ mặt đặt tên": Cứ nghĩ basename là "base name" – cái tên cơ bản nhất, cốt lõi nhất của file hoặc thư mục cuối cùng trong đường dẫn. Giống như bạn gọi tên đứa bạn thân mà không cần gọi cả họ tên dài ngoằng của nó vậy.
  • "Đuôi" là "option": Tham số ext (đuôi mở rộng) là tùy chọn. Nếu bạn muốn tên file "không râu ria", nhớ thêm nó vào. Nhưng hãy cẩn thận, nó phải khớp chính xác với đuôi của file (bao gồm cả dấu chấm .).
  • "Đa nền tảng" là chân ái: Module path của Node.js "khôn ngoan" lắm, nó tự động xử lý sự khác biệt giữa các hệ điều hành (Windows dùng \, Linux/macOS dùng /). Nên các em cứ yên tâm mà "code" thôi, không cần lo "đường dẫn" bị "lạc trôi" đâu.
  • Kết hợp "combo": path.basename() thường đi đôi với path.dirname() (lấy đường dẫn thư mục cha) và path.extname() (lấy đuôi mở rộng). Ba "anh em siêu nhân" này sẽ giúp các em "xử lý" mọi "ca khó" về đường dẫn.

4. Ứng dụng "real-life" mà các "ông lớn" hay dùng

path.basename() không chỉ là lý thuyết suông đâu, nó được ứng dụng "tùm lum" trong các "project" thực tế đấy:

  • Upload File (như Google Drive, Dropbox): Khi người dùng upload một file, server cần lấy tên file gốc để lưu vào database hoặc đặt tên cho file được lưu trữ. path.basename() giúp lấy tên file "sạch" nhất.
  • Hệ thống Quản lý Nội dung (CMS - như WordPress, Medium): Khi bạn tạo một bài viết hoặc upload hình ảnh, CMS cần hiển thị tên file một cách thân thiện hoặc tạo "slug" (URL thân thiện) từ tên file.
  • Static Site Generators (như Next.js, Gatsby): Các công cụ này dùng basename để tự động tạo đường dẫn URL hoặc tên file đầu ra dựa trên cấu trúc thư mục của bạn.
  • Công cụ dòng lệnh (CLI tools): Các "tool" như git hay các "script" tự động hóa thường dùng basename để xử lý các file hoặc thư mục được truyền vào làm đối số.
  • Logging và Monitoring: Khi ghi log về các sự kiện liên quan đến file, việc chỉ ghi tên file (thay vì toàn bộ đường dẫn) giúp log ngắn gọn và dễ đọc hơn.

5. Thử nghiệm đã từng và Hướng dẫn nên dùng cho case nào

Anh Creyt đã từng "đau đầu" với việc xử lý tên file khi làm các dự án lớn, đặc biệt là khi phải "đá qua đá lại" giữa các hệ điều hành. path.basename() chính là "cứu tinh" trong nhiều tình huống:

  • Nên dùng khi:

    • Bạn chỉ cần hiển thị tên file "đẹp đẽ" cho người dùng, không cần biết nó nằm ở đâu.
    • Bạn muốn lưu trữ file với tên gốc (hoặc biến đổi một chút) sau khi upload.
    • Bạn cần lọc hoặc tìm kiếm file dựa trên tên của chúng.
    • Bạn đang xây dựng một "tool" tự động hóa mà cần lấy tên file để xử lý tiếp.
    • Bạn muốn tạo một "slug" (chuỗi thân thiện cho URL) từ tên file.
  • Không nên dùng khi:

    • Bạn muốn lấy toàn bộ đường dẫn tuyệt đối của file (hãy dùng path.resolve() hoặc path.join()).
    • Bạn muốn thay đổi thư mục chứa file (hãy dùng path.dirname() để lấy đường dẫn thư mục, sau đó kết hợp với path.join()).
    • Bạn cần kiểm tra xem một đường dẫn có phải là thư mục hay không (hãy dùng fs.stat()).

Đó, path.basename() tuy nhỏ mà có võ, giúp các em "làm chủ" thế giới đường dẫn file trong Node.js một cách "ngầu lòi"! Cứ "thực hành" nhiều vào, rồi các em sẽ thấy nó "vi diệu" thế nào. Có gì thắc mắc, cứ "comment" phía dưới nhé, anh Creyt luôn sẵn sàng "giải đáp"!

Thuộc Series: Nodejs

Bài giảng này được tự động xuất bản ngẫu nhiên từ thư viện kiến thức. Đừng quên đón xem các Từ khoá Hướng Dẫn tiếp theo nhé!

#tech #cyberpunk #laravel
Chỉnh sửa bài viết

Bình luận (0)

Vui lòng Đăng Nhập để Bình luận

Hỗ trợ Markdown cơ bản
Nguyễn Văn A
1 ngày trước

Tính năng này đỉnh quá ad ơi, chờ mãi mới thấy một blog Tiếng Việt có UI/UX xịn như vầy!