Forma correcta de importar lodash


He tenido un pull request feedback a continuación, solo preguntándome cuál es la forma correcta de importar lodash?

Será mejor que importes has desde 'lodash/has'.. Para la versión anterior de lodash (v3) que por sí mismo es bastante pesado, solo debemos importar un módulo/función specidic en lugar de importar todo el lodash biblioteca. No estoy seguro acerca de la versión más reciente (v4).

import has from 'lodash/has';

Vs

import { has } from 'lodash';

Gracias

Author: Bruce, 2016-02-07

3 answers

import has from 'lodash/has'; es mejor porque lodash contiene todas sus funciones en un solo archivo, por lo que en lugar de importar toda la biblioteca 'lodash' a 100k, es mejor simplemente importar la función has de lodash que es tal vez 2k.

 149
Author: Bruce,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-08 05:38:04

Si está utilizando webpack 4, el siguiente código es modificable en árbol.

import { has } from 'lodash-es';

Los puntos a tener en cuenta;

  1. Los módulos CommonJS no se pueden sacudir del árbol, por lo que definitivamente debe usar lodash-es, que es la biblioteca de Lodash exportada como módulos ES, en lugar de lodash (CommonJS).

  2. lodash-es'paquete s.json contiene "sideEffects": false, que notifica a webpack 4 que todos los archivos dentro del paquete están libres de efectos secundarios (ver https://webpack.js.org/guides/tree-shaking/#mark-the-file-as-side-effect-free).

  3. Esta información es crucial para tree shaking ya que los paquetes de módulos no agitan los archivos que posiblemente contengan efectos secundarios, incluso si sus miembros exportados no se utilizan en ningún lugar.

Editar

A partir de la versión 1.9.0, Parcel también soporta "sideEffects": false, por lo tanto import { has } from 'lodash-es'; es también árbol shakable con Parcela. También soporta sacudidas de árboles Módulos CommonJS, aunque es probable que la sacudida de árboles de los módulos ES sea más eficiente que CommonJS según mi experimento.

 21
Author: kimamula,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-25 08:14:18

Si está utilizando babel, debe revisar babel-plugin-lodash, elegirá las partes de lodash que está utilizando para usted, menos problemas y un paquete más pequeño.

Tiene algunas limitaciones :

  • Debe usar importaciones ES2015 para cargar Lodash
  • Babel
  • Las secuencias en cadena no son compatibles. Vea esta entrada de blog para alternativas.
  • Modularizado los paquetes de métodos no son soportado
 1
Author: Orlando,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-06 20:05:17