Как загрузить js-файл пользовательского модуля в magento 2?

magento.stackexchange https://magento.stackexchange.com//questions/85851

Вопрос

Я создал модуль слайдера баннеров для Magento 2.Я вызвал файл JS, используя следующие способы, и он работает нормально.В классе блока я создал следующую функцию

public function getBaseJs($fileName){

        return $this->_storeManager->getStore()->getBaseUrl(
                \Magento\Framework\UrlInterface::URL_TYPE_MEDIA
            ).'bannerslider/js/'.$fileName;
    }

и эта функция вызывается в bannerslider.phtml файл следующим образом.

<script type="text/javascript" src="<?php echo $this->getBaseJs('jquery-1.7.min.js') ?>"></script>
<script type="text/javascript" src="<?php echo $this->getBaseJs('jquery.flexslider.js') ?>"></script>

Но, согласно механизму зависимостей jQuery require.js Как я могу это сделать?

Это было полезно?

Решение

Наконец-то я получил решение своего вопроса.Я хотел бы поделиться этим подробно, как показано ниже.

enter image description here

Шаг 1: Добавьте js-файл вашего модуля в раздел <Vendor>/<Module_Name>/view/<area>/web/js/

например <Vendor>/<Module_Name>/view/<area>/web/js/flexslider.js

Шаг 2: Создавать requirejs-config.js файл под <Vendor>/<Module_Name>/view/<area>/

например <Vendor>/<Module_Name>/view/<frontend>/requirejs-config.js

Добавьте следующий код в requirejs-config.js

var config = {
    map: {
        '*': {
            bannerslider: 'VendorName_ModuleName/js/flexslider'
        }
    }
};

Примечание:вы можете установить имя объекта по вашему выбору.В моем случае я установил как bannerslider и не добавляйте расширение .js к имени файла в VendorName_ModuleName/js/flexslider

Шаг 3: Позвоните в function вашего модуля js в .phtml файл следующим образом.

<script type="text/javascript">
    require(['jquery','bannerslider'],function($){
        $(window).load(function() {
            $('.flexslider-8').flexslider({
                animation: "fade",
                controlNav: "thumbnails",
                slideshowSpeed: 2000,
                minItems: 2,
                maxItems: 4
            });
        });

    });
</script>

У меня он работает нормально.

След :Использовать Net вкладка, чтобы увидеть запрошенный URL-адрес js-файла, загруженного или нет.

enter image description here

Другие советы

Мой путь:

Шаг 1

Включите базовый файл JavaScript расширения, используя инструкции по макету.

Шаг 2

Требуйте другие файлы javascript расширения из базового файла с помощью RequireJS:

require(
    [
      'jquery', 
      '{VendorName}_{ModuleName}{path_to_js_file/relative_to/view/web/no_js_at_end}'
     // ex. Magento/Ui/view/base/web/js/grid/sticky/sticky.js
     // became Magento_Ui/js/grid/sticky/stick
    ], 
    function($, someOtherLibrary) {
        // custom code here...
    );
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top