В чем разница между веб-сайтом/шаблоном и веб-сайтом/шаблонами


Я заметил, что в ядре используются как web/template, так и web/templates:

  • vendor/magento/module-ui/view/frontend/web/templates/group/group.html
  • vendor/magento/module-ui/view/frontend/web/template/messages.html

Это ошибка или есть причина, по которой существуют два разных каталога?

Author: Ben Crook, 2018-02-22

2 answers

Единственное число template - это стандартный каталог.

Несмотря на количество файлов в каталоге Magento_Ui templates, этот случай представляется уникальным экземпляром, и мне не ясно, почему это было сделано таким образом. Модуль Magento_Ui, по-видимому, является единственным модулем, который использует web/templates вместо web/template. Существует запись requirejs-config, которая сопоставляет template с templates примерно так:

'ui/template': 'Magento_Ui/templates'

(источник: module-ui/view/base/requirejs-config.js).

Файл (module-ui/view/base/web/js/lib/knockout/template/loader.js), который обрабатывает асинхронные запросы для шаблонов, содержит formatPath метод, который возвращает:

 return result.replace(/^([^\/]+)/g, '$1/template')

Следовательно, если вы используете template в качестве каталога, вы можете быть менее явными при загрузке HTML-шаблонов или должны сопоставить его.

Для конкретного примера базового модуля, использующего каталог template, обратитесь к модулю Magento_Checkout, который содержит большое количество шаблонов .html в каталоге web/template.


Карта была частью одного из первых коммитов: https://github.com/magento/magento2/blame/0865a13d4785221cec11f343ddc3452a77014951/app/code/Magento/Ui/view/base/requirejs-config.js. Меня бы не удивило, если бы template был стандартизирован, а Magento_Ui никогда не обновлялся.

 3
Author: bassplayer7, 2018-02-22 17:58:05

Это не ошибка, они намеренно разместили обе папки, по умолчанию, как мы видели для других модулей, используется "шаблон", однако они сопоставили папку "шаблоны" в vendor/magento/module-ui/view/base/requirejs-config.js следующим образом:

paths: {
        'ui/template': 'Magento_Ui/templates'
    }

И они использовали этот отображенный путь следующим образом:

'text!ui/template/tooltip/tooltip.html'

В vendor/magento/module-ui/view/base/web/js/lib/knockout/bindings/tooltip.js в строке 11 в определенном разделе.

Другой способ доступа к файлам шаблонов из папки "шаблоны" можно увидеть в vendor/magento/module-ui/view/base/web/js/grid/columns/thumbnail.js в строке 13 как 'text!Magento_ui/templates/grid/cells/thumbnail/preview.html'

Также, пожалуйста, обратите внимание, что шаблон файлы из этой папки фактически используются для отображения html, поэтому их можно использовать, например, для отображения отображаемого html во всплывающей модели. Визуализация достигается путем передачи шаблона и его переменных в качестве аргументов классу mage/template.

 1
Author: MTM, 2018-02-22 17:55:52