De https://lodash.com/:Charger une seule méthodes de lodash pour les petits construit avec 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');
Cela fonctionne bien avec la plupart des méthodes: each
, map
, isArray
, etc. La seule méthode que je reçois connot le travail est lodash/chain
.
Le code actuel où j'importer toute la bibliothèque lodash va quelque chose comme ceci:
_.chain(items)
.filter(...)
.groupBy(...)
.map(...)
.concat(...)
.value();
Quelle serait la bonne façon de créer un objet chainable approprié qui ne contient pas toutes les méthodes incluses dans la construction lodash? La méthode chain
crée un objet wrapper lodash et le renvoie. Je pourrais créer ma propre méthode de la chaîne comme celui-ci
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;
Maintenant, l'appel à chain
sera en mesure d'exécuter filter
et map
. Malheureusement, le résultat de chain().filter
n'aura pas les méthodes que j'ai attachées dans la chaîne d'origine. Quelle est la manière appropriée de créer un objet lodash chainable personnalisé?
Trouvé. Commencé avec ceci: https://www.npmjs.com/package/babel-plugin-lodash. Puis, après avoir utilisé le plugin, j'ai obtenu: La construction du module a échoué: Erreur: filename.js: la syntaxe de lodash chaining n'est pas supportée par babel-plugin-lodash. Envisagez de remplacer la syntaxe de chaînage par _.flow et _.modèles de composition flowRight. Voir https://medium.com/making-internets/why-using-chain-is-a-mistake-9bc1f80d51ba. Le dernier lien a une très bonne explication. – jmlopez