Разница между модулями.меньше и больше.меньше


Есть ли какая-либо разница между расширением темы с помощью _module.less и _extend.less? И какова наилучшая практика при расширении модуля/темы?

Моей первой мыслью было, что лучше использовать _module.less при создании нового модуля и _extend.less при расширении модуля. Но Luma использует _module.less при расширении пустой темы, так что теория вылетела в окно.

Единственное различие, которое я вижу между ними, заключается в том, что _module.less импортируется до отзывчивой библиотеки и _theme.less где as _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';
Author: Rafael Corrêa Gomes, 2016-05-20

3 answers

Ответ несколько скрыт в документах Magento:

Расширение темы с помощью _extend.less - это самый простой вариант, когда вы довольны всем, что есть в родительской теме, но хотите добавить больше стилей.

Подробнее читайте здесь

Используйте _модуль.меньше, если вы хотите внести существенные изменения в стили для модуля и использовать _extend.меньше для незначительных корректировок. Вы найдете больше примеров того, как переопределять стили компонентов в ссылка выше.

 24
Author: c.norin, 2018-01-10 21:21:03

Простое объяснение или различие между ними:

_extend.less это способ расширения/изменения стилей родительских тем например, вы довольны своей родительской темой Luma и просто хотите изменить стили кнопок в своей пользовательской теме, все, что вам нужно сделать, это создать новый файл _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.

 5
Author: Devtype, 2019-05-02 22:25:49

_extends.less с буквой S в конце пустой темы - это файл, в котором они создали все классы, которые могут быть расширены с помощью LESS позже в рамках темы, без необходимости создания новых компонентов или модульной структуры для изменения стиля. -> Для тех, кто мне не верит: https://github.com/magento/magento2/blob/2.3-develop/app/design/frontend/Magento/blank/web/css/source/_extends.less{[7] } проверьте файл.

_extend.less без буквы S в конце - это для тех случаев, когда вам 99% доволен тем, что есть в родительской теме, и вам просто нужно изменить пару вещей, изменить стиль, и все.

Что касается последнего, мое личное мнение, не используйте его для собственного развития. Позже это создает большой беспорядок. Сохраняйте свою структуру модульной с помощью _module.less для каждого модуля, который вы хотите настроить, и в конце вы получите лучший результат и поддерживаемый проект.

 2
Author: Ezequiel Alba, 2019-05-02 21:19:09