Eu tive um feedback de solicitação de recebimento abaixo, apenas imaginando qual é a maneira correta de importar o lodash?
É melhor importar o has do 'lodash / has'. Para a versão anterior do lodash (v3), que por si só é bastante pesada, devemos importar apenas um módulo / função especídica em vez de importar toda a biblioteca do lodash. Não tenho certeza sobre a versão mais recente (v4).
import has from 'lodash/has';
vs
import { has } from 'lodash';
obrigado
javascript
lodash
babeljs
Conta
fonte
fonte
Respostas:
import has from 'lodash/has';
é melhor porque o lodash mantém todas as suas funções em um único arquivo; portanto, em vez de importar toda a biblioteca 'lodash' a 100k, é melhor importar apenas ahas
função do lodash, que talvez seja 2k.fonte
'lodash/has'
não é um pacote separado. Há um arquivo chamadohas.js
na raiz do'lodash'
pacote regular eimport has from 'lodash/has'
(ouconst has = require ('lodash/has
) carregará esse arquivo. Não são pacotes método separado sobre npm, mas eles usam a "sintaxe de ponto":'lodash.has'
. Isso também seria uma maneira válida de fazer isso, se você não se importar em instalar um pacote separado para cada método que você usa (e potencialmente aumentar suapackage.json
massa como resultado).import { has } from 'lodash'
iria trabalhar da mesma forma, já que o resto vai ser retiradosimport has from 'lodash-es/has'
sintaxe que eu peguei a trepidação total da árvore. passou de 526 KB para 184 KB, consulte stackoverflow.com/questions/41991178/…Se você estiver usando
webpack 4
, o código a seguir é trêmulo.Os pontos a serem observados;
Os módulos CommonJS não podem ser alterados em árvore, portanto você deve usar definitivamente
lodash-es
, que é a biblioteca Lodash exportada como Módulos ES, em vez delodash
(CommonJS).lodash-es
contém package.json"sideEffects": false
, que notifica o webpack 4 de que todos os arquivos dentro do pacote são livres de efeitos colaterais (consulte https://webpack.js.org/guides/tree-shaking/#mark-the-file-as-side sem efeitos ).Essas informações são cruciais para agitar a árvore, pois os agrupadores de módulos não armazenam arquivos de agitação na árvore que possivelmente contêm efeitos colaterais, mesmo que seus membros exportados não sejam usados em nenhum lugar.
Editar
A partir da versão 1.9.0, o Parcel também suporta
"sideEffects": false
, portanto,import { has } from 'lodash-es';
também é instável em árvore com o Parcel. Ele também suporta módulos CommonJS de agitação de árvore, embora seja provável que a agitação de árvore dos Módulos ES seja mais eficiente que o CommonJS, de acordo com meu experimento .fonte
import { ... } from 'lodash-es';
Meu pacote ainda inclui toda a biblioteca.--module
opção do compilador comoes6
,es2015
ouesnext
.modules: false
para que eles não sejam transpilados para o CommonJS. Agora estou usando a solução de Bruce, que parece funcionar. Obrigado pela sua contribuição, tenho certeza que funciona, mas simplesmente não tenho a configuração para isso.import has from 'lodash-es/has'
e asimport {has} from 'lodash-es'
duas variantes agitam árvores ao usarwebpack-4
Importar métodos específicos dentro de colchetes
Prós:
Contras:
fonte
_.map()
sintaxe para deixar claro que uma biblioteca externa está sendo usada. Éimport _ from 'lodash'
igualmente eficiente como sua sugestão ou existe outra maneira de poder usar essa sintaxe?_.map()
sintaxe explícita . Você foi capaz de descobrir uma maneira de manter isso enquanto importa es6 e agita as árvores?Se você estiver usando o babel, verifique o babel-plugin-lodash , ele selecionará as partes do lodash que você está usando para você, menos problemas e um pacote menor.
Tem algumas limitações :
fonte
Você pode importá-los como
ou como
o segundo é muito otimizado que o primeiro porque carrega apenas os módulos necessários
então use assim
fonte
Importar Lodash na versão
4.17.15
fonte