_Module.less और _extend.less के बीच अंतर


22

वहाँ का उपयोग कर एक विषय का विस्तार _module.lessऔर के बीच कोई अंतर है _extend.less? और मॉड्यूल / थीम का विस्तार करते समय सबसे अच्छा अभ्यास क्या है?

मेरा पहला विचार यह था कि _module.lessकिसी नए मॉड्यूल को स्टाइल करते समय, और _extend.lessकिसी मॉड्यूल को बढ़ाते समय उपयोग करना बेहतर होता है । लेकिन लूमा _module.lessखाली विषय का विस्तार करते समय उपयोग करता है ताकि सिद्धांत खिड़की से बाहर चला गया।

एकमात्र अंतर जो मैं उनके बीच देख सकता हूं वह _module.lessउत्तरदायी पुस्तकालय से पहले आयात किया जाता है और _theme.lessजहां _extend.lessउनके बाद आयात किया जाता है।

यह वह क्रम है जिसमें वे आयात किए जाते हैं vendor/magento/theme-frontend-blank/web/css/styles-l.less

//
//  Blank theme desktop styles
//  _____________________________________________

//  These desktop styles are added to mobile

//
//  Global lib + theme styles
//  ---------------------------------------------

@import '_styles.less';
@import (reference) 'source/_extends.less';

//
//  Magento Import instructions
//  ---------------------------------------------

//@magento_import 'source/_module.less'; // Theme modules
//@magento_import 'source/_widgets.less'; // Theme widgets

//
//  Media queries collector
//  ---------------------------------------------

@import 'source/lib/_responsive.less';

@media-target: 'desktop'; // Sets target device for this file
@media-common: false; // Sets not to output common styles

//
//  Global variables override
//  ---------------------------------------------

@import 'source/_theme.less';

//
//  Extend for minor customisation
//  ---------------------------------------------

//@magento_import 'source/_extend.less';

जवाबों:


20

मैजेंटो डॉक्स में उत्तर कुछ छिपा हुआ है:

जब आप मूल विषय के साथ सब कुछ से खुश होते हैं, तो _extend.less का उपयोग करते हुए एक थीम को विस्तारित करना सबसे सरल विकल्प है, लेकिन अधिक शैलियों को जोड़ना चाहते हैं।

यहाँ और पढ़ें

जब आप किसी मॉड्यूल के लिए शैलियों में बड़े बदलाव करना चाहते हैं तो _module.less का उपयोग करें और मामूली समायोजन के लिए _extend.less का उपयोग करें । ऊपर दिए गए लिंक में घटक शैलियों को ओवरराइड करने के तरीके के बारे में आपको अधिक उदाहरण मिलेंगे।


1
मैंने पढ़ा है कि लेकिन यह वास्तव में क्यों नहीं समझाता है, ऐसा लगता है कि इसके पीछे कोई तर्क नहीं है। अगर कोई अंतर है तो मैं यह पता लगाने की कोशिश कर रहा हूं। मैं अपने सभी परिवर्तनों के लिए _extend.less का उपयोग कर रहा हूं क्योंकि मैं कुछ का उपयोग करने के लिए संगतता पसंद करता हूं क्योंकि 'मैगेंटो ने ऐसा कहा था'।
बेन क्रुक

1
@BenCrook अगर मेरा पिछले कुछ दिनों से ये पढ़ना मुझे सही साबित करता है, नहीं। यदि किसी को .lessमूल विषय / मॉड्यूल में फ़ाइल के समान पथ के साथ अपने विषय में कोई फ़ाइल जोड़ना था , तो वह ओवरराइड है। आप शायद अपने विषय में एक रिक्त _module.less बनाकर सत्यापित कर सकते हैं, और यह देखते हुए कि क्या मूल शैलियाँ लागू होती हैं।
डैरेन फेल्टन

1
एक के बाद php bin/magento setup:static-content:deploy, आप गौर कर सकते हैं pub/static/frontend/<vendor>/<themeName>/<locale>/css/और pub/static/frontend/<vendor>/<themeName>/<locale>/<Module_Name>/css/और वहाँ या तो अपने विषय, या मॉड्यूल / माता-पिता विषय से आ रही है करने के लिए * .less फ़ाइलों के लिए सांकेतिक लिंक किया जाएगा।
डैरेन फेल्टन

1
यह सही है _module.less माता-पिता की कम फ़ाइल को ओवरराइड करता है, कोई विरासत या विलय नहीं है। मुझे लगता है कि मैं अपने मूल उत्तर में और अधिक स्पष्ट कर सकता था :)
c.norin

1
@MattCosentino मुझे एहसास है कि यह उत्तर बहुत देर से आता है, लेकिन मैं इसे यहाँ छोड़ दूँगा अगर कोई इस पर ठोकर खाए: कृपया _extends.less और _extend.less के बीच अंतर पर ध्यान दें। मूल विषय से शैलियों का विस्तार करने के लिए _extend.less फ़ाइलों को किसी भी मॉड्यूल संदर्भ में जोड़ा जा सकता है। _Extends.less विषय की जड़ में स्थित है और इसका उपयोग मौजूदा उपयोगिताओं (<प्रोजेक्ट> /lib/web/css/docs/source/_utilities.less) को विस्तारित करने के लिए किया जाता है।
c.norin

3

सरल स्पष्टीकरण या दोनों के बीच अंतर:

_extend.lessउदाहरण के लिए पैरेंट थीम शैलियों को बढ़ाने / संशोधित करने का तरीका है कि आप अपने मूल विषय लूमा से खुश हैं और बस अपने कस्टम थीम में बटन शैलियों को बदलना चाहते हैं, आपको बस अपने कस्टम थीम के _buttons_extend.lessतहत एक नई फ़ाइल बनाने की आवश्यकता है web/css/sourceऔर वहाँ शैलियों को समायोजित करें। इस फाइल को _extend.lessअपनी थीम डायरेक्टरी के अंदर फाइल में जोड़कर रजिस्टर करें ।

क्या होगा यदि आप किसी मॉड्यूल जैसे चेकआउट मॉड्यूल की शैलियों का विस्तार करना चाहते हैं, तो आप _extend.lessअपने थीम मॉड्यूल फ़ोल्डर के अंदर एक फ़ाइल बना सकते हैं, उदाहरण के लिए Magento_Checkout/web/css/source/_extend.lessऔर वहां मॉड्यूल स्टाइलिंग जोड़ / बढ़ा सकते हैं।

अब अगर मैंने _module.lessअपने मॉड्यूल निर्देशिका के अंदर फ़ाइल जोड़ी है, तो मैं Magento_Checkout/web/css/source/_module.lessइस मॉड्यूल के लिए स्टाइल करने वाले अपने मूल विषयों को ओवरराइड करने का इरादा कर रहा हूं, जिस स्थिति में मुझे _module.lessअपने पैरेंट के मॉड्यूल निर्देशिका से फ़ाइल की प्रतिलिपि बनाने की आवश्यकता है और उस फ़ाइल में संशोधन करना होगा, जिस स्थिति में यह फ़ाइल होगी मूल थीम _module.lessफ़ाइल को पूरी तरह से बदलें ।


वह एक माता-पिता के रूप में लूमा के बारे में कभी बात नहीं कर रहे हैं।
इजेक्वियल अल्बा

1

_extends.lessरिक्त विषय के भीतर अंत में एक एस के साथ, एक फ़ाइल जहां वे सभी वर्गों है कि के माध्यम से बढ़ाया जा सकता है बनाया है LESSशैली में परिवर्तन के लिए नए घटकों या मॉड्यूलर संरचना बनाने की आवश्यकता के बिना विषय के भीतर बाद में,। -> उन लोगों के लिए जो मुझ पर विश्वास नहीं करते: https://github.com/magento/magento2/blob/2.3-develop/app/design/frontend/Magento/blank/web/css/source/_extends.less जाँच करें फ़ाइल।

_extend.lessअंत में एस के बिना, जब आप क्या माता पिता विषय है और आप सिर्फ बातें की एक जोड़ी को बदलने के लिए, कुछ शैली भी बदल की जरूरत के साथ 99% खुश हैं के लिए है और बस इतना ही।

उत्तरार्द्ध के बारे में, मेरी व्यक्तिगत राय, इसे अपने स्वयं के विकास के लिए उपयोग न करें। यह बाद में एक बड़ी गड़बड़ पैदा करता है। अपने ढांचे _module.lessको हर उस मॉड्यूल के साथ रखें जिसे आप अनुकूलित करना चाहते हैं और आपको अंत में एक बेहतर परिणाम और प्राप्य परियोजना मिलेगी।

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