Da https://lodash.com/:caricare un singolo metodi lodash per i più piccoli costruisce con 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');
Questo metodo funziona bene con la maggior parte dei metodi: each
, map
, isArray
, ecc Un metodo che connot ottengo il lavoro è lodash/chain
.
Il codice attuale, in cui importare l'intera libreria lodash più o meno così:
_.chain(items)
.filter(...)
.groupBy(...)
.map(...)
.concat(...)
.value();
Quale sarebbe il modo corretto di creare un oggetto chainable adeguato che non contiene tutti i metodi inclusi nel lodash costruire? Il metodo chain
crea un oggetto wrapper lodash e lo restituisce. Potrei creare il mio metodo di catena come questo
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;
Ora la chiamata a chain
sarà in grado di eseguire filter
e map
. Sfortunatamente, il risultato di chain().filter
non avrà i metodi che ho allegato nella catena originale. Qual è il modo corretto di creare un oggetto lodash concatenabile personalizzato?
Trovato. Iniziato con questo: https://www.npmjs.com/package/babel-plugin-lodash. Quindi, dopo aver usato il plugin, ho ottenuto: Module build failed: Error: filename.js: la sintassi di lodash chaining non è supportata da babel-plugin-lodash. Considera di sostituire la sintassi di concatenazione con _.flow e _.flowRight modelli di composizione. Vedere https://medium.com/making-internets/why-using-chain-is-a-mistake-9bc1f80d51ba. L'ultimo link ha un'ottima spiegazione. – jmlopez