Внешняя библиотека в DW

Я новичок в спросе. То, что я пытаюсь сделать, это добавить внешнюю библиотеку для использования в контроллерах DW.

Короче говоря: Как использовать внешнюю библиотеку в качестве lodash в контроллере спроса?

2 ответа

Решение

Demandware использует движок Rhino под капотом, который обычно не совместим с последними библиотеками. Чтобы использовать стороннюю библиотеку в Demandware, попробуйте выполнить следующие действия:

  1. Создать новый пустой картридж
  2. Скопируйте и вставьте код библиотеки
  3. Попробуйте использовать это. Если это действительно простая библиотека, она может работать из коробки. Скорее всего, однако, вам придется внести изменения в код. Погрузитесь в журналы ошибок, чтобы увидеть, что идет не так.
  4. Если у библиотеки есть зависимости, вам также нужно их исправить.

Вы можете использовать картридж_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 и использовать его с подходом модуля.

Другие вопросы по тегам