Von https://lodash.com/:laden ein einzelnes lodash Methoden für kleinere baut mit browserify/Rollup/webpack
// Load a single method for smaller builds with browserify/rollup/webpack.
var chunk = require('lodash/chunk');
var extend = require('lodash/fp/extend');
Das funktioniert gut mit den meisten Methoden: each
, map
, isArray
usw. Die eine Methode, die ich connot bekommen Arbeiten ist lodash/chain
.
Der aktuelle Code, wo ich die ganze lodash Bibliothek importieren geht dies so etwas wie:
_.chain(items)
.filter(...)
.groupBy(...)
.map(...)
.concat(...)
.value();
Was ist der richtige Weg ein richtiges verkettbar Objekt zu schaffen, die nicht alle Methoden enthält enthalten bauen im lodash würde? Die Methode chain
erstellt ein lodash-Wrapper-Objekt und gibt es zurück. Ich konnte meine eigene Kette Methode wie diese
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;
nun der Aufruf an chain
in der Lage, auszuführen filter
und map
erstellen. Leider hat das Ergebnis von chain().filter
nicht die Methoden, die ich in der ursprünglichen Kette angehängt habe. Was ist der richtige Weg, um ein benutzerdefiniertes Objekt zu erstellen?
Es gefunden. Begonnen damit: https://www.npmjs.com/package/babel-plugin-lodash. Dann, nachdem ich das Plugin benutzt hatte, bekam ich: Modul Build fehlgeschlagen: Fehler: filename.js: lodash Verkettungssyntax wird nicht von babel-plugin-lodash unterstützt. Sie können die Verkettungssyntax durch _.flow und _ ersetzen.flowRight-Kompositionsmuster Siehe https://medium.com/making-internets/why-using-chain-is-a-mistake-9bc1f80d51ba. Der letzte Link hat eine sehr gute Erklärung. – jmlopez