我是demandware的新手。 我正在尝试做的是添加一个要在 DW 控制器中使用的外部库。
总之: 如何将外部库用作需求软件控制器中的 lodash?
Demandware 使用的是 Rhino 引擎,它通常与最新的库不兼容。要在 Demandware 中使用第三方库,请尝试以下步骤:
- 创建新的空白墨盒
- 复制粘贴库的代码
- 尝试使用它。如果它是一个非常简单的库,它可能会开箱即用。但是,您很可能必须进行代码调整。深入了解错误日志以查看出了什么问题。
- 如果库有依赖项,则还需要修复这些依赖项。
为了能够在需求软件脚本(例如控制器(中使用 lodash,您需要进行一些调整。作为参考,请查看下划线是如何调整的,并在您的项目中像另一个墨盒一样使用。下划线的用法示例如下:
const map = require('underscore/map');
...
return map(basket.productLineItems, function (productLineItem) {
return productLineItem.getQuantity().getValue();
});
...
因此,您需要从 lodash 源创建墨盒并将其与模块需要方法一起使用。
您可以使用基于 lodash npm 节点模块版本 3.10.1 的cartridge_lib_lodash。
此墨盒库是 ES5 的 babel 转译,但有一些细微的改动,以便可用作标准 SFRA 墨盒。
它可以作为标准SFRA盒式磁带安装,克隆存储库并运行npm脚本上传盒式磁带
$ git clone git@github.com:pikamachu/pika-cartridge-lib-lodash.git
$ cd pika-cartridge-lib-lodash
$ npm run uploadCartridge
或者可以使用
$ 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 文档文档。