const absolutePath = path.join(__dirname, some, dir);
so với
const absolutePath = path.resolve(__dirname, some, dir);
path.joinsẽ ghép nối __dirnamelà tên thư mục của tệp hiện tại được nối với các giá trị của somevà dirvới dấu phân cách cụ thể của nền tảng.
Trong khi
path.resolvesẽ xử lý __dirname, somevà dirtức là từ phải sang trái chuẩn bị trước bằng cách xử lý nó.
nếu bất kỳ giá trị nào của somehoặc dirtương ứng với một đường dẫn gốc thì đường dẫn trước đó sẽ bị bỏ qua và xử lý phần còn lại bằng cách xem nó là gốc
Để hiểu rõ hơn về khái niệm này, hãy để tôi giải thích chi tiết hơn một chút như sau: -
Các path.joinvà path.resolvehai phương pháp hoặc các chức năng của các module con đường cung cấp bởi nodejs khác nhau.
Trường hợp cả hai chấp nhận một danh sách các đường dẫn nhưng sự khác biệt đến trong kết quả tức là cách họ xử lý các đường dẫn này.
path.joinnối tất cả các phân đoạn đường dẫn cụ thể lại với nhau bằng cách sử dụng dấu tách riêng của nền tảng làm dấu phân cách, sau đó chuẩn hóa đường dẫn kết quả. Trong khi path.resolve()xử lý chuỗi các đường dẫn từ phải sang trái, với mỗi đường dẫn tiếp theo được chuẩn bị trước cho đến khi một đường dẫn tuyệt đối được xây dựng.
Khi không có đối số được cung cấp
Ví dụ sau đây sẽ giúp bạn hiểu rõ cả hai khái niệm: -
Tên tệp của tôi là index.jsvà thư mục làm việc hiện tại làE:\MyFolder\Pjtz\node
const path = require('path');
console.log("path.join() : ", path.join());
// outputs .
console.log("path.resolve() : ", path.resolve());
// outputs current directory or equalent to __dirname
Kết quả
λ node index.js
path.join() : .
path.resolve() : E:\MyFolder\Pjtz\node
path.resolve()phương thức sẽ xuất ra đường dẫn tuyệt đối trong đó là path.join()trả về. đại diện cho thư mục làm việc hiện tại nếu không có gì được cung cấp
Khi một số đường dẫn gốc được truyền dưới dạng đối số
const path=require('path');
console.log("path.join() : " ,path.join('abc','/bcd'));
console.log("path.resolve() : ",path.resolve('abc','/bcd'));
Kết quả tôi
λ node index.js
path.join() : abc\bcd
path.resolve() : E:\bcd
path.join()chỉ nối danh sách đầu vào với dấu phân tách cụ thể nền tảng trong khi path.resolve()xử lý chuỗi các đường dẫn từ phải sang trái, với mỗi đường dẫn tiếp theo được chuẩn bị trước cho đến khi một đường dẫn tuyệt đối được xây dựng.