Как я могу убедиться, что RequireJS в Magento 2 загружает jQuery перед загрузкой других скриптов?Я обнаружил, что вложение требует решает это - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь загрузить плагин для отложенного загрузчика, для работы которого требуется jQuery.Если я напишу свой сценарий так:

require([
        "jquery",
        "ScandiLazy",
    ], function ($) {
        jQuery('.category-products .lazy').lazy();
    });

Я получу:

"jquery.lazy.min.js:43 Uncaught TypeError: Cannot read property 'fn' of undefined",

Затем:

Uncaught TypeError: jQuery(...).lazy is not a function

, что является ошибкой, поскольку jQuery незагружен.

Но если я вкладываю требуемые:

 require([ "jquery"], function ($) {
        require([ "ScandiLazy"], function ($) {
            jQuery('.category-products .lazy').lazy();
        });
    });

Тогда он отлично работает.

Но неправильно вкладывать требования, чтобы заставить его работать,действительно ли это правильный способ сделать это?

Если это неверно, как можно быть абсолютно уверенным, что jQuery загружен до того, как загрузится плагин ленивой загрузки ScandiLazy?

1 Ответ

0 голосов
/ 17 сентября 2018

ScandiLazy нужен jQuery для работы, поэтому вы должны указать RequireJS установить jQuery как зависимость для ScandiLazy, используя shim (подробнее здесь https://requirejs.org/docs/api.html#config-shim). Быстрый пример, как это исправить:

requirejs.config({ // configure RequireJS first
    shim: {
        'path/to/ScandiLazy': ['jquery']
    }
});

require([ // load modules
    "jquery",
    "ScandiLazy",
], function ($) {
    jQuery('.category-products .lazy').lazy();
});
...