निम्नलिखित आह्वान के बीच कुछ अंतर है?
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
हमेशा निरपेक्ष URL का परिणाम होगा, और इस पथ को हल करने के लिए आपकी कार्यशील निर्देशिका का उपयोग आधार के रूप में किया जाएगा। लेकिन जैसा __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()
विधि प्लेटफ़ॉर्म विशिष्ट विभाजक को एक सीमांकक के रूप में उपयोग करके सभी दिए गए पथ खंडों को मिलाती है, फिर परिणामी पथ को सामान्य करती है।
बेहतर तरीके से समझने और व्यवहार में अंतर करने के लिए, मैं इसे विभिन्न परिदृश्यों के साथ समझाता हूं।
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()
रिटर्न के रूप में निरपेक्ष पथ का उत्पादन होगा । यदि कुछ भी प्रदान नहीं किया जाता है तो वर्तमान कार्य निर्देशिका या सापेक्ष पथ का प्रतिनिधित्व करना
2. किसी भी तर्क के रूप में / पथ जोड़ना।
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()
OS विशिष्ट विभाजकों के साथ प्रत्येक तर्क को सम्मिलित करता है, जबकि 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
।