নিম্নলিখিত অনুরোধগুলির মধ্যে কিছু পার্থক্য আছে?
path.join(__dirname, 'app')
বনাম
path.resolve(__dirname, 'app')
কোনটি পছন্দ করা উচিত?
নিম্নলিখিত অনুরোধগুলির মধ্যে কিছু পার্থক্য আছে?
path.join(__dirname, 'app')
বনাম
path.resolve(__dirname, 'app')
কোনটি পছন্দ করা উচিত?
উত্তর:
দুটি ক্রিয়াকলাপগুলি বিভাগগুলির সাথে /বিভিন্নভাবে শুরু হয় ; joinএটি কেবল পূর্ববর্তী যুক্তি দিয়ে একত্রিত করবে, তবে resolveএটিকে মূল ডিরেক্টরি হিসাবে বিবেচনা করবে এবং সমস্ত পূর্ববর্তী পাথ উপেক্ষা করবে - cdপ্রতিটি যুক্তির সাথে সম্পাদনের ফলাফল হিসাবে এটি ভাবেন :
path.join('/a', '/b') // Outputs '/a/b'
path.resolve('/a', '/b') // Outputs '/b'
আরেকটি বিষয় লক্ষণীয় তা হ'ল path.resolveসর্বদা একটি নিখুঁত ইউআরএল তৈরি হবে এবং এই পথটি সমাধানের জন্য আপনার কার্যক্ষম ডিরেক্টরিটি বেস হিসাবে ব্যবহার করবে। তবে __dirnameযেভাবেই হোক এটি একটি পরম পথ হিসাবে এটি আপনার ক্ষেত্রে গুরুত্বপূর্ণ নয়।
আপনার কোনটি ব্যবহার করা উচিত, উত্তরটি: এটি আপনি কীভাবে বিভাগগুলি শুরু করতে চান তার উপর নির্ভর করে / আচরণ - এগুলি কী কেবল যোগ দেওয়া উচিত বা তাদের নতুন মূল হিসাবে কাজ করা উচিত?
যদি অন্য যুক্তিগুলি কঠোরভাবে কোড করা থাকে তবে এটি কোনও বিষয় নয়, এক্ষেত্রে আপনার সম্ভবত বিবেচনা করা উচিত (ক) ভবিষ্যতে এই লাইনটি কীভাবে পরিবর্তিত হতে পারে এবং (খ) কোডের অন্যান্য জায়গাগুলির সাথে এটি কতটা সামঞ্জস্যপূর্ণ।
path.join('/a', '/b', 'c')ফিরে আসবেন /a/b/c, আবার path.resolve('/a', '/b', 'c')ফিরে আসবেন /b/c।
resolveসবচেয়ে স্পষ্ট নয়, path.cd([starting dir], [final dir])আরও স্বজ্ঞাত হবে।
think of it as the result of executing cd with each argumentআমাকে পরিশেষে এটা বুঝতে প্রণীত। ধন্যবাদ
ফাইল সিস্টেমের পাথের ডিফল্ট ক্রিয়াকলাপগুলি অপারেটিং সিস্টেমের ভিত্তিতে পরিবর্তিত হয় আমাদের এমন কিছু জিনিস প্রয়োজন যা এটি বিমূর্ত করে। pathমডিউল ফাইল এবং ডিরেক্টরির পাথ সঙ্গে কাজ করার জন্য ইউটিলিটি বা এপিআই প্রদান করে। আপনি এটি ব্যবহার করে এটি আপনার প্রকল্পে অন্তর্ভুক্ত করতে পারেন
const path = require('path');
path.joinএবংpath.resolve পাথ মডিউলের দুটি ভিন্ন পদ্ধতি।
এই দুটি পদ্ধতিই পাথ বা পথের বিভাগগুলির একটি ক্রম গ্রহণ করে।
path.resolve()পদ্ধতি একটি মধ্যে পাথ বা পথ অংশ একটি ক্রম সমাধান করা পথটি ।
path.join()পদ্ধতি, সব দেওয়া পাথ অংশ একসঙ্গে একটি বিভেদক হিসাবে প্ল্যাটফর্ম নির্দিষ্ট বিভাজক ব্যবহার যোগদান করে তারপর ফলে পাথ normalizes।
আচরণগুলি আরও ভালভাবে বুঝতে এবং পার্থক্য করতে, আমাকে এটি বিভিন্ন পরিস্থিতি দিয়ে ব্যাখ্যা করতে দিন।
1. যদি আমরা কোনও যুক্তি বা খালি স্ট্রিং সরবরাহ না করি
আমার ক্ষেত্রে, আমার ফাইলের নাম index.jsএবং বর্তমান কার্যনির্বাহী ডিরেক্টরি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 of the node process
এবং চলমান ফলাফল নীচে হিসাবে
λ node index.js
path.join() : .
path.resolve() : E:\MyFolder\Pjtz\node
উপরোক্ত পরীক্ষার অনুমানটি হ'ল থা path.resolve()পদ্ধতিটি যেখানে প্রত্যাবর্তনের সাথে সাথে নিখুঁত পথে আউটপুট দেবে path.join()। যদি কিছু সরবরাহ না করা হয় তবে বর্তমান ওয়ার্কিং ডিরেক্টরি বা আপেক্ষিক পথের প্রতিনিধিত্ব করছে
২. কোনও যুক্তি হিসাবে একটি / পাথ যুক্ত করা।
const path=require('path');
console.log("path.join() : " ,path.join('abc','/bcd'));
console.log("path.resolve() : ",path.resolve('abc','/bcd'));
এবং ফলাফল হয়
λ node index.js
path.join() : abc\bcd
path.resolve() : E:\bcd
এই পরীক্ষার সাহায্যে আমরা যে path.join()অনুভূতিটি পেয়েছি তা হ'ল কেবলমাত্র প্ল্যাটফর্ম নির্দিষ্ট বিভাজকের সাথে ইনপুট তালিকার সাথে সম্মতি দেয় যখন path.resolve()প্রক্রিয়াটি ডান থেকে বামে পথের ক্রম প্রক্রিয়া করে, প্রতিটি পরবর্তী পথটি নিখুঁত পাথ নির্মাণ না হওয়া অবধি প্রবর্তিত হয়।
path.join()ওএস নির্দিষ্ট বিভাজকগুলির সাথে প্রতিটি যুক্তিকে সম্মতি জানানো হয় যখন path.resolve()প্রতিটি যুক্তি মূলের সাথে সমাধান করে এবং আউটপুট উত্পাদন করে।
path.resolve()হয় সমতুল্য না করতে __dirname। প্রথমটি ওয়ার্কিং ডিরেক্টরি প্রদান করে, দ্বিতীয়টি বর্তমান ফাইলের পথ।
const path = require('path'); console.log(path.resolve()) console.log(__dirname) console.log(path.resolve()===__dirname)
path.resolve() is equivalent to __dirname
1) path.resolve পরম পথ তৈরি করে।
কোনও নিখুঁত পাথ তৈরি না হওয়া অবধি পদ্ধতিটি ডান থেকে বামে অবর্ণনীয় পথ তৈরি করে ।
উদাহরণ স্বরূপ:
path.resolve('/a', 'b', 'c'); // C:\a\b\c
path.resolve('/a', '/b', 'c'); // C:\b\c
path.resolve('/a', '/b', '/c'); // C:\c
যদি নিখুঁত পাথ তৈরি না করা হয় তবে বর্তমান ওয়ার্কিং ডিরেক্টরি ব্যবহার করে পদ্ধতি:
উদাহরণ স্বরূপ:
path.resolve('a', 'b', 'c'); // C:\{current_working_directory}\a\b\c
2) path.join সমস্ত পাথের সাথে যোগ দেয় এবং ফলাফলকে স্বাভাবিক করে তোলে
উদাহরণ স্বরূপ:
path.join('/a', '/b', '/c'); // \a\b\c
path.join('/a', '/b', 'c'); // \a\b\c
path.join('/a', 'b', 'c'); // \a\b\c
path.join('a', 'b', 'c'); // \a\b\c
path.join('a','b','c')ফলাফল হওয়া উচিত a\b\c।