DW中的外部库

时间:2017-08-07 16:12:32

标签: demandware

我是需求软件的新手。 我要做的是添加一个外部库以在DW控制器中使用。

简而言之: 如何在Demandware控制器中使用外部库作为lodash?

3 个答案:

答案 0 :(得分:0)

为了能够在Demandware脚本(例如控制器)中使用lodash,您需要进行一些调整。如需参考,请检查underscore如何调整和使用,就像项目中的另一个墨盒一样。下划线的用法示例如下:

const map = require('underscore/map');
...
return map(basket.productLineItems, function (productLineItem) {
   return productLineItem.getQuantity().getValue();
});
...

因此,您需要从lodash源创建盒式磁带,并将其与模块需求方法一起使用。

答案 1 :(得分:0)

Demandware正在使用引擎盖下的Rhino引擎,它通常与最新的库不兼容。要在Demandware中使用第三方库,请尝试以下步骤:

  1. 创建新的空白盒式磁带
  2. 复制粘贴库的代码
  3. 尝试使用它。如果它是一个非常简单的库,它可以开箱即用。但最有可能的是,您必须进行代码调整。深入了解错误日志,看看出了什么问题。
  4. 如果库具有依赖关系,您也需要修复它们。

答案 2 :(得分:0)

您可以基于lodash npm节点模块版本3.10.1使用cartridge_lib_lodash

此盒式磁带库是通向ES5的babel移植,进行了一些小的更改,以便可以用作标准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文档。