J'ai eu un commentaire de demande de tirage ci-dessous, je me demandais simplement quelle est la bonne façon d'importer lodash?
Vous feriez mieux d'importer à partir de 'lodash / has'. Pour la version antérieure de lodash (v3) qui en elle-même est assez lourde, nous ne devrions importer qu'un module / une fonction spécifique plutôt que d'importer toute la bibliothèque lodash. Pas sûr de la version la plus récente (v4).
import has from 'lodash/has';
contre
import { has } from 'lodash';
Merci
javascript
lodash
babeljs
Facture
la source
la source
Réponses:
import has from 'lodash/has';
est mieux parce que lodash contient toutes ses fonctions dans un seul fichier, donc plutôt que d'importer la bibliothèque entière 'lodash' à 100k, il est préférable d'importer simplement lahas
fonction de lodash qui est peut-être 2k.la source
'lodash/has'
n'est pas un package séparé. Il y a un fichier appeléhas.js
à la racine du'lodash'
paquet normal , etimport has from 'lodash/has'
(ouconst has = require ('lodash/has
) chargera ce fichier. Il y a des paquets de méthode séparés sur NPM, mais ils utilisent la « syntaxe à point »:'lodash.has'
. Ce serait également un moyen valable de s'y prendre si cela ne vous dérange pas d'installer un package séparé pour chaque méthode que vous utilisez (et potentiellement de créer votrepackage.json
énorme en conséquence).import { has } from 'lodash'
cela fonctionnerait de la même manière, puisque le reste sera suppriméimport has from 'lodash-es/has'
syntaxe que j'ai obtenu un tremblement complet de l'arbre. est passé de 526 Ko à 184 Ko, voir stackoverflow.com/questions/41991178/…Si vous utilisez
webpack 4
, le code suivant est modifiable dans l'arborescence.Les points à noter;
Les modules CommonJS ne sont pas transformables en arborescence, vous devez donc absolument utiliser
lodash-es
, qui est la bibliothèque Lodash exportée en tant que modules ES, plutôt quelodash
(CommonJS).lodash-es
's package.json contient"sideEffects": false
, qui notifie au webpack 4 que tous les fichiers à l'intérieur du package sont sans effet secondaire (voir https://webpack.js.org/guides/tree-shaking/#mark-the-file-as-side -sans effet ).Ces informations sont cruciales pour le tremblement de l'arbre car les bundlers de modules ne secouent pas les fichiers qui peuvent contenir des effets secondaires même si leurs membres exportés ne sont utilisés nulle part.
Éditer
À partir de la version 1.9.0, Parcel prend également en charge
"sideEffects": false
, par conséquent, l'arborescenceimport { has } from 'lodash-es';
peut également être modifiée avec Parcel. Il prend également en charge les modules CommonJS d'arborescence, bien qu'il soit probable que l'arborescence des modules ES soit plus efficace que CommonJS selon mon expérience .la source
import { ... } from 'lodash-es';
mon bundle inclut toujours la bibliothèque entière.--module
option du compilateur sures6
,es2015
ouesnext
.modules: false
afin qu'ils ne soient pas transpilés en CommonJS. J'utilise maintenant la solution de Bruce qui semble fonctionner. Merci pour votre contribution, je suis sûr que cela fonctionne mais je n'ai tout simplement pas la configuration pour cela.import has from 'lodash-es/has'
et lesimport {has} from 'lodash-es'
deux variantes font trembler les arbres lors de l'utilisationwebpack-4
Importer des méthodes spécifiques à l'intérieur des accolades
Avantages:
Les inconvénients:
la source
_.map()
syntaxe indique clairement qu'une bibliothèque externe est utilisée. Est-ceimport _ from 'lodash'
aussi efficace que votre suggestion ou existe-t-il une autre façon de pouvoir utiliser cette syntaxe?_.map()
syntaxe explicite . Avez-vous réussi à trouver un moyen de maintenir cela tout en effectuant des importations ES6 et en secouant les arbres?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 :
la source
Vous pouvez les importer comme
ou comme
le second est beaucoup plus optimisé que le premier car il ne charge que les modules nécessaires
alors utilisez comme ça
la source
Importer Lodash dans la version
4.17.15
la source