2011-09-30 8 views
39

मैं एक दोस्त के लिए कुछ कोड की जांच कर रहा हूं, और पाया है कि जिस डेवलपर ने अपनी साइट बनाई है, वह प्रत्येक रिश्तेदार src, href, और include को आगे स्लैश / के साथ शुरू किया है।एक डेवलपर प्रत्येक रिश्तेदार पथ की शुरुआत में एक आगे स्लैश क्यों करेगा?

उदाहरण के लिए:

src="/assets/js/jquery.js" 

मैं इस से पहले कभी नहीं देखा है। तो मेरा सवाल यह है कि एक डेवलपर एक सापेक्ष पथ की शुरुआत में आगे बढ़ने वाला / क्यों रखेगा?

+0

dreamweaver ftl; पी –

+0

मैं सहमत हूं। गेनी एफटीडब्लू: पी – Blender

+5

डाउनवोट क्यों? मैंने सोचा कि यह एक अच्छा सवाल था .. + 1 counterstrike ftw! –

उत्तर

57

यह पथ को रूट करने के लिए किया जाता है (इसे एक पूर्ण पथ बनाते हैं)।

यह सुनिश्चित करता है कि पथ सापेक्ष नहीं है लेकिन साइट की जड़ से पढ़ा गया है।

यह किसी को फ़ाइल को स्थानांतरित करने और विभिन्न संसाधनों के लिंक को बदलने की अनुमति नहीं देता है।

अपने उदाहरण का उपयोग करना:

src="/assets/js/jquery.js" 

संदर्भित फ़ाइल (उदाहरण के लिए) /pages/admin/main.html में है, तो संबंधित पथ का उपयोग कर आप का प्रयोग करेंगे:

src="../../assets/js/jquery.js" 

मान लीजिए आप एक बच्चे को निर्देशिका में फाइल को ले जाते हैं। कोई परिवर्तन मूल निहित पथ के साथ के लिए आवश्यक हैं सकता है, लेकिन रिश्तेदार से बदलने की आवश्यकता होगी:

src="../../../assets/js/jquery.js" 
+15

ओह मैं देखता हूं। तो आपका मतलब यह है कि यह लिंक * के साथ * लिंक को स्थानांतरित करने की इजाजत देता है, ताकि फ़ाइल की स्थिति के सापेक्ष पथ की बजाय, यह साइट रूट के सापेक्ष है। क्या मैंने वही कहा जो आपने कहा था? कभी-कभी यह मुझे चीजों को दोहराने में मदद करता है। जवाब के लिए धन्यवाद! – stefmikhail

+0

@stefmikhail - हाँ, आपको यह सही मिला। – Oded

7

यह सुनिश्चित करने के लिए संपत्ति वेब सर्वर के "रूट" से आता है।

उदा। होस्ट www.example.com यूआरएल www.example.com/assets/js/jquery.js

मैं प्रोजेक्ट के साथ ऐसा करता हूं, मैं अपने स्वयं के वर्चुअल होस्ट पर लाइव सुनिश्चित करना चाहता हूं।

समस्या वास्तव में नीचे आती है जहां उन संपत्तियों को शामिल किया जा रहा है। उदाहरण के लिए यदि संपत्ति/सहायता/पृष्ठों/faq से संपत्ति शामिल की जा रही है तो डेवलपर यह सुनिश्चित कर सकता है कि साइट गैर-बदलते होस्ट पर होस्ट होने पर पथ सही तरीके से काम करेगी, उदा। example.com।

सापेक्ष पथ, 'संपत्ति/जेएस/jquery.js' का उपयोग करने का मुद्दा यह है कि यदि संपत्ति/सहायता/पृष्ठों/faqs से संपत्ति शामिल है तो पथ उस शुरुआती बिंदु से संबंधित हो जाता है, उदाहरण के लिए

आशा है कि

23

@Oded's answer पर जोड़ा जा रहा है, स्लैश URL संपूर्ण बनाता है में मदद करता है /help/pages/faqs/assets/js/jquery.js।

उदाहरण के लिए:

/foo/bar/baz.css 

यह करने के लिए अनुवाद:

http://www.example.com/foo/bar/baz.css 

लेकिन स्लेश के बिना, चीज़ें थोड़ी अलग हो जाते हैं:

यह ब्राउज़र में देखने के लिए कहता है डीआईआर के लिए वर्तमान फ़ोल्डर (रूट फ़ोल्डर नहीं) ectory foo और फिर बाद की निर्देशिका और फ़ाइल। ,

<script type="text/javascript" src="foo.js"></script> 

आप किसी अन्य फ़ोल्डर में HTML फ़ाइल ले जाते हैं, तो स्क्रिप्ट लोड नहीं होगा के रूप में foo.js HTML फ़ाइल के साथ नहीं ले जाया जा रहा है:


इसके अलावा, उदाहरण के लिए इस HTML ले ।

लेकिन आप एक पूर्ण URL का उपयोग करता है, तो:

<script type="text/javascript" src="/foo.js"></script> 

तब जे एस फ़ाइल बिल्कुल http://www.example.com/foo.js से चाहे कहीं HTML फ़ाइल है भरी हुई है।

+0

यह बहुत आसान है लेकिन कभी-कभी हम भूल जाते हैं। धन्यवाद – Nelssen

संबंधित मुद्दे