Внешняя библиотека в DW
Я новичок в спросе. То, что я пытаюсь сделать, это добавить внешнюю библиотеку для использования в контроллерах DW.
Короче говоря: Как использовать внешнюю библиотеку в качестве lodash в контроллере спроса?
2 ответа
Demandware использует движок Rhino под капотом, который обычно не совместим с последними библиотеками. Чтобы использовать стороннюю библиотеку в Demandware, попробуйте выполнить следующие действия:
- Создать новый пустой картридж
- Скопируйте и вставьте код библиотеки
- Попробуйте использовать это. Если это действительно простая библиотека, она может работать из коробки. Скорее всего, однако, вам придется внести изменения в код. Погрузитесь в журналы ошибок, чтобы увидеть, что идет не так.
- Если у библиотеки есть зависимости, вам также нужно их исправить.
Вы можете использовать картридж_lib_lodash на основе модуля узла lodash npm версии 3.10.1.
Эта библиотека картриджей представляет собой переносную версию в ES5 с некоторыми незначительными изменениями, чтобы ее можно было использовать в качестве стандартного картриджа SFRA.
Его можно установить как стандартный картридж SFRA, клонирующий репозиторий и запускающий скрипт npm uploadCartridge
$ git clone git@github.com:pikamachu/pika-cartridge-lib-lodash.git
$ cd pika-cartridge-lib-lodash
$ npm run uploadCartridge
Или может быть добавлен как зависимость модуля узла к существующему проекту картриджей SFRA, используя
$ npm i cartridge_lib_lodash
Модули Lodash могут быть загружены с помощью require картриджа в качестве стандартного скрипта SFRA.
// lodash modules can be loaded separately using
var _array = require('*/cartridge/scripts/lib/lodash/array');
var _chain = require('*/cartridge/scripts/lib/lodash/chain');
var _collection = require('*/cartridge/scripts/lib/lodash/collection');
var _date = require('*/cartridge/scripts/lib/lodash/date');
var _function = require('*/cartridge/scripts/lib/lodash/function');
var _lang = require('*/cartridge/scripts/lib/lodash/lang');
var _math = require('*/cartridge/scripts/lib/lodash/math');
var _number = require('*/cartridge/scripts/lib/lodash/number');
var _object = require('*/cartridge/scripts/lib/lodash/object');
var _string = require('*/cartridge/scripts/lib/lodash/string');
var _support = require('*/cartridge/scripts/lib/lodash/support');
var _utility = require('*/cartridge/scripts/lib/lodash/utility');
См. Документацию lodash docs для использования модуля.
Чтобы использовать lodash в скриптах по требованию (например, в контроллере), вам нужно внести некоторые изменения. Для справки, пожалуйста, проверьте, как подчеркивание было адаптировано и использовано как другой картридж в вашем проекте. Пример использования для подчеркивания будет:
const map = require('underscore/map');
...
return map(basket.productLineItems, function (productLineItem) {
return productLineItem.getQuantity().getValue();
});
...
Поэтому вам нужно будет создать картридж из источников lodash и использовать его с подходом модуля.