J'ai eu un retour de demande d'extraction ci-dessous, je me demandais simplement comment importer correctement lodash.
Vous feriez mieux de faire importer à partir de 'lodash/a' .. Pour la version précédente de lodash (v3) qui, en soi, est assez lourd, nous ne devrions importer que un module/fonction spécifique plutôt que d'importer le lodash entier bibliothèque. Pas sûr de la nouvelle version (v4).
import has from 'lodash/has';
contre
import { has } from 'lodash';
Merci
import has from 'lodash/has';
est préférable, car lodash contient toutes ses fonctions dans un seul fichier. Par conséquent, au lieu d'importer la totalité de la bibliothèque 'lodash' à 100 Ko, il est préférable d'importer la fonction has
de lodash, qui est peut-être 2k.
Si vous utilisez Webpack 4, le code suivant est une arborescence shakable.
import { has } from 'lodash-es';
Les points à noter;
Les modules CommonJS ne sont pas modulables, vous devez donc absolument utiliser lodash-es
, qui est la bibliothèque Lodash exportée sous forme de modules ES, plutôt que lodash
(CommonJS).
Le package.json de lodash-es
contient "sideEffects": false
, ce qui indique au webpack 4 que tous les fichiers qu'il contient ne contiennent aucun effet secondaire (voir https://webpack.js.org/guides/tree-shaking/#mark-the-file-as -side-effect-free ).
Ces informations sont cruciales pour le bouleversement de l’arbre, car les bundlers de modules ne sauvegardent pas les fichiers qui contiennent éventuellement des effets secondaires, même si leurs membres exportés ne sont utilisés nulle part.
Modifier
À partir de la version 1.9.0, Parcel prend également en charge "sideEffects": false
, threrefore import { has } from 'lodash-es';
est également une arborescence modulable avec Parcel . Il prend également en charge les modules CommonJS avec agitation des arbres, bien qu'il soit vraisemblable que l'agitation des modules ES est plus efficace que CommonJS selon mon expérience .
Si vous utilisez babel, vous devriez vérifier babel-plugin-lodash , il sélectionnera les parties de lodash que vous utilisez pour vous, moins de tracas et un paquet plus petit.
Il a quelques limitations :
Importer des méthodes spécifiques à l'intérieur des accolades
import { map, tail, times, uniq } from 'lodash';
Avantages:
Les inconvénients: