使用browserify/rollup/webpack为较小的构建加载单个lodash方法
发件人: 这适用于大多数方法:使用browserify/rollup/webpack为较小的构建加载单个lodash方法,webpack,browserify,lodash,rollup,Webpack,Browserify,Lodash,Rollup,发件人: 这适用于大多数方法:each、map、isArray,等等。我无法使用的一种方法是lodash/chain 我导入整个lodash库的当前代码如下所示: _.chain(items) .filter(...) .groupBy(...) .map(...) .concat(...) .value(); 创建不包含lodash构建中包含的所有方法的适当可链接对象的正确方法是什么?chain方法创建一个lodash包装器对象并返回它。我可以像这样创建自己的链方法 va
each
、map
、isArray
,等等。我无法使用的一种方法是lodash/chain
我导入整个lodash库的当前代码如下所示:
_.chain(items)
.filter(...)
.groupBy(...)
.map(...)
.concat(...)
.value();
创建不包含lodash构建中包含的所有方法的适当可链接对象的正确方法是什么?chain
方法创建一个lodash包装器对象并返回它。我可以像这样创建自己的链方法
var lodash = require('lodash/wrapperLodash');
var filter = require('lodash/filter');
var map = require('lodash/map');
function chain(value) {
var result = lodash(value);
result.__chain__ = true;
result.filter = filter
result.map = map;
return result;
}
module.exports = chain;
现在对
chain
的调用将能够执行filter
和map
。不幸的是,chain().filter
的结果将不会包含我在原始链中附加的方法。创建自定义可链接lodash对象的正确方法是什么?对此有不同的解决方案,尽管并非所有解决方案都保留了链功能
洛达斯定制构建(保留链)
与自定义方法一起使用。它将使用您需要的方法生成lodash构建。我在过去使用此解决方案时发现的问题是,尽管导入了一些方法,但构建的大小还是相当大,因为它需要整个lodash函数来包装数据,以便能够使用链
仅导入您需要的功能(无链)
大多数lodash函数在npm()中作为独立包提供,因此您可以单独导入它们。不过,您将不会与此解决方案有关联
从lodash src导入功能(无链)
另一种解决方案是从完整的lodash模块中导入特定函数,因此任何绑定器都只会使用该函数及其依赖项,而不是整个lodash,如:
var pick = require('lodash/pick');
建议:不要使用链
尽管您特别要求拥有该链,但我不鼓励您使用它,因为这是一种糟糕的函数式编程实践。查看(正如您在第一条评论中提到的)以获得关于为什么最好不要使用链以及如何远离它的非常透彻的解释。找到了它。从以下内容开始:。然后在使用我得到的插件后:模块构建失败:错误:filename.js:lodash链接语法不受babel插件lodash支持。考虑用“.FULL”和“.FultWrand组合模式”替换链接语法。看见最后一个链接有很好的解释。
var pick = require('lodash/pick');