"लिबास" और "वेंडर" फ़ोल्डरों के बीच अंतर क्या है?


103

स्रोत फ़ोल्डर पदानुक्रम के बारे में, हमेशा कुछ सामान्य विशेषताएं होती हैं, जैसे कि src, docया testफ़ोल्डर, जिसमें आसानी से समझने वाली सामग्री होती है।

हालांकि, मुझे एहसास हुआ कि बड़ी परियोजनाओं में ए libऔर vendorफ़ोल्डर्स दोनों होते हैं, जबकि मैंने हमेशा सोचा था कि वे एक ही थे, जैसा कि उनके नाम " librariesबाहरी से तीसरे-पक्ष vendors" को इंगित करते हैं । हालांकि, दोनों को एक ही परियोजना में देखने का मतलब है कि अंतर है।

मुझे कोई जानकारी न तो गूगल पर मिली और न ही फाइलसिस्टम पदानुक्रम मानक जैसे स्रोतों पर , भले ही यह वास्तव में किसी तरह का सामान्य अभ्यास हो।


यहां सिम्फनी के साथ एक अधिक विस्तृत उदाहरण दिया गया है : एक बार जब आप एक परियोजना बनाते हैं, तो आपको libअपने प्रोजेक्ट की जड़ में एक फ़ोल्डर मिलता है । इस फ़ोल्डर में, निम्न संरचना पाई जाती है:

lib
+--filter
+--form
+--…
+--vendor
    +--simpletest
    +--symfony

यहां, symfonyफ़ोल्डर में सभी सिम्फनी के कोर शामिल हैं।


3
@YannisRizos मुझे पता है कि यह उनके स्रोत में नहीं है। एक बार जब आप एक परियोजना पर काम करना शुरू करते हैं और मॉड्यूल उत्पन्न करते हैं, हालांकि, आप lib/vendorऔर अन्य निर्देशिकाओं को समाप्त करेंगे vendor। और वे अकेले नहीं हैं"हर कोई किसी भी dir संरचना का चयन कर सकता है" हाँ ठीक है, धन्यवाद। सभी चाहते हैं लेकिन कोड कर सकते हैं। अगर मैं src"वौडिगूगा" को कॉल करना चाहता हूं , तो मैं कर सकता हूं। मैं यह नहीं पूछ रहा हूं कि क्या मैं कर सकता हूं, लेकिन अन्य जो गंभीर और प्रसिद्ध हैं, वे ऐसा क्यों करते हैं जो एक अच्छा अभ्यास है।
10

2
स्पष्ट के अलावा, जो libकोर लाइब्रेरीज़ (बिल्कुल आवश्यक लाइब्रेरी या फ्रेमवर्क के रूप में एक ही लेखक से निर्मित लाइब्रेरी) vendorरखती है और थर्ड पार्टी लाइब्रेरी रखती है, मुझे नहीं लगता कि कोई अन्य लेन का भेद है। यह अंतर कई कारणों से कुछ महत्वपूर्ण है, और यह सामान्य अभ्यास के रूप में समझ में आता है।
यानिस डे

1
btw, क्या आप सवाल में टिप्पणी में स्पष्टीकरण जोड़ सकते हैं?
yannis

@YannisRizos क्या स्पष्टीकरण? मेरे प्रश्न को साबित करने वाला Google कोड खोज पूरी तरह से फर्जी नहीं है? यह वास्तव में मददगार होगा यदि आप "विभिन्न कारणों" का विवरण दे सकते हैं, जिसके लिए भेद महत्वपूर्ण है, साथ ही यह भी समझाते हैं कि कैसे कुछ शामिल किए गए तृतीय-पक्ष दूसरों की तुलना में अधिक आवश्यक हो सकते हैं - यदि वे शामिल हैं, तो एक कारण है, जब तक कि इसमें शामिल न हों अनुरक्षक अक्षम और बैच-कोड शामिल हैं।
MattiSG

1
आप चीजों को / lib / में छू सकते हैं, आप / वेंडर / में चीजों को नहीं छू सकते हैं
Timo Huovinen

जवाबों:


64

जब मैं एक को देखने libया librariesनिर्देशिका, मैं के बारे में सोच:

  • लाइब्रेरी, प्लगइन्स नहीं, मॉड्यूल, आदि।
  • OOP प्रक्रियात्मक के बजाय, जहां यह लागू है (यानी PHP)

जब मुझे कोई vendorनिर्देशिका दिखाई देती है , तो मुझे लगता है:

  • पुस्तकालय, प्लगइन्स, मॉड्यूल, घटक, आदि केवल पुस्तकालय नहीं हैं, लेकिन ऐसा कुछ भी जो किसी तीसरे पक्ष द्वारा प्रदान किया गया हो।
  • और सामान जो कोड नहीं है, एक आइकन सेट की तरह।

जब मैं देखता हूं libऔर vendorनिर्देशिका करता हूं, तो मैं कुछ अंतरों के बारे में सोचता हूं:

  1. libकेवल पुस्तकालयों को रखता है, vendorवास्तव में कुछ भी पकड़ सकता है,
  2. libवह जगह है जहाँ मुझे अपनी लाइब्रेरीज़ डालनी चाहिए, vendorजहाँ मुझे कुछ भी थर्ड पार्टी (मूल लेखक द्वारा कोड सहित) डालनी चाहिए,
  3. libपरियोजना के मूल लेखक द्वारा पुस्तकालय जहां स्थित हैं (यदि वह मेरे नहीं हैं), जबकि vendorमूल लेखक ने तीसरे पक्ष को कुछ भी कहा है।
  4. आप सुरक्षित रूप से मान सकते हैं कि जो कुछ भी है, libवह बाकी परियोजना के समान लाइसेंस के तहत लाइसेंस प्राप्त है।

जो भी उपरोक्त में से एक पर लागू होता है, अलग-अलग फ़ोल्डर्स के लिए पर्याप्त कारण है। AFAIK वहाँ आम तौर पर स्वीकार किए जाते हैं अभ्यास नहीं है। कुछ समुदायों में समुदाय व्यापक प्रथाएं हैं, लेकिन यह सिर्फ इसके बारे में है।


विशिष्ट सिम्फनी उदाहरण के लिए: सिम्फनी एक ढांचा है और मुझे लगता है कि डेवलपर्स जो कहने की कोशिश कर रहे हैं, वह यह है कि सिम्फनी एप्लिकेशन में फ्रेमवर्क के कोर लाइब्रेरी विक्रेता कोड होते हैं, अर्थात तीसरे पक्ष से आते हैं और आवेदन के मूल लेखक से नहीं (आप)।


2
"सामान है कि कोड नहीं है" dataया resources(या की तर्ज पर और अधिक सटीक img), IMHO में होगा। इसके अलावा, हमारे सिम्फनी उदाहरण में, vendorवास्तव में सभी सिम्फनी कोर शामिल हैं, इसलिए जब तक मुझे आपका "मूल लेखक" संप्रदाय नहीं मिलता है, मुझे नहीं लगता है कि आपके अंक 2 और 3 फिट बैठता है
मैटीएसजी

1
@ माटीएसजी आह, क्षमा करें, मैं यह नहीं कह रहा हूं कि इसे सभी चार बिंदुओं पर फिट होना चाहिए। बस एक ठो। और "सामान है कि कोड नहीं है" एक resourcesया assetsनिर्देशिका में होना चाहिए , लेकिन परियोजना के आधार पर यह एक vendorनिर्देशिका (मैं assetsवास्तव में पसंद करते हैं ) में समझ बना सकता है ।
यनीस

4
बेहतर एकवचन या बहुवचन क्या है? libबनाम libsऔर vendorबनाम vendors?
क्वांग

4
@ क्यूंग सबसे लोकप्रिय परियोजनाओं में मैंने एकवचन का उपयोग देखा है, लेकिन मुझे नहीं पता कि कौन सा बेहतर है।
यानिस

@YannisRizos: आप प्रक्रियात्मक के बजाय OOP के बारे में क्या सोचते हैं?
मैट ओ'ब्रायन

21

@ वेनम के उत्तर को सामान्य बनाना लेकिन इसे संपादित करने की हिम्मत नहीं हुई।

इसलिए, ऐसा लगता है कि इस ढांचे को कम से कम आवेदन ढांचे (रेल और सिम्फनी) में देखा जा सकता है।

यह एप्लिकेशन डेवलपर्स के लिए lib/ srcसंरचना को अक्षुण्ण रखने का एक तरीका है , जबकि एक फ्रेमवर्क के उपयोग द्वारा लाई गई दूरी के अन्य स्तर को जोड़ना : vendorफ़ोल्डर में वास्तव में फ्रेमवर्क की लाइब्रेरी होती है, libजो एप्लिकेशन के शामिल पुस्तकालयों के लिए फ़ोल्डर को छोड़ देती है, और srcइसके स्रोत के लिए फ़ाइलें।

यह एक "अधिक दूर" है lib, क्योंकि फ्रेमवर्क के बिना महत्वपूर्ण है, एप्लिकेशन बेकार है, लेकिन एप्लिकेशन के डेवलपर द्वारा छुआ नहीं जाना चाहिए: यह फ्रेमवर्क विक्रेता की लाइब्रेरी है


10

सिम्फनी जैसी किसी चीज़ के मामले में, libएप्लिकेशन कोड (यानी डेवलपर्स द्वारा लिखा गया) होता है और vendorयह थर्ड-पार्टी कोड होता है। इसके बारे में सोचें जैसे कि srcसामान्य रूप से फ़ोल्डर क्या है, और यह आवश्यक है। मैं आमतौर पर PHP में उस शैली को देखता हूं क्योंकि आप वास्तविक कक्षाओं से html टेम्पलेट को अलग करते हैं।


2

से रेल एसेट पाइपलाइन गाइड :

  • app/assets ऐसी संपत्तियों के लिए है जो एप्लिकेशन के स्वामित्व में हैं, जैसे कि कस्टम छवियां, जावास्क्रिप्ट फाइलें या स्टाइलशीट।

  • lib/assets आपके अपने पुस्तकालयों के कोड के लिए है जो वास्तव में अनुप्रयोग के दायरे में या उन पुस्तकालयों में फिट नहीं होता है जो अनुप्रयोगों में साझा किए जाते हैं।

  • vendor/assets ऐसी संपत्तियों के लिए है जो बाहर की संस्थाओं के स्वामित्व में हैं, जैसे कि जावास्क्रिप्ट प्लगइन्स और सीएसएस फ्रेमवर्क के लिए कोड।

मुझे पता है कि यह एक रेल-विशिष्ट प्रश्न नहीं है, लेकिन स्पष्टीकरण अच्छा और स्पष्ट है और संभवतः अन्य रूपरेखा / परियोजना संरचनाओं तक फैला हुआ है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.