У меня была обратная связь по запросу, просто интересно, как правильно импортировать lodash?
Вам лучше сделать импорт has from 'lodash / has'. Для более ранней версии lodash (v3), которая сама по себе довольно тяжелая, мы должны импортировать только специальный модуль / функцию, а не импортировать всю библиотеку lodash. Не уверен насчет более новой версии (v4).
import has from 'lodash/has';
против
import { has } from 'lodash';
Спасибо
javascript
lodash
babeljs
Билл
источник
источник
Ответы:
import has from 'lodash/has';
Это лучше, потому что lodash хранит все свои функции в одном файле, поэтому вместо того, чтобы импортировать всю библиотеку 'lodash' на 100 Кб, лучше просто импортироватьhas
функцию Лодаша, которая может быть 2 Кб.источник
'lodash/has'
- это не отдельный пакет. Вhas.js
корневом каталоге обычного'lodash'
пакета есть файл, иimport has from 'lodash/has'
(илиconst has = require ('lodash/has
) он будет загружен. Там являются отдельными пакеты метода на НОМ, но они используют «точечный синтаксис»:'lodash.has'
. Это также будет правильным способом сделать это, если вы не возражаете против установки отдельного пакета для каждого метода, который вы используете (и,package.json
как следствие, в результате этого можете сделать свой массовый процесс).import { has } from 'lodash'
будет работать так же, так как остальные будут удаленыimport has from 'lodash-es/has'
синтаксис, я получил полное дрожание дерева. перешел с 526 КБ на 184 КБ, см. stackoverflow.com/questions/41991178/…Если вы используете
webpack 4
, следующий код является древовидным.Точки для заметки;
Модули CommonJS не могут быть перемещаемыми по дереву, поэтому вы обязательно должны их использовать
lodash-es
, то есть библиотеку Lodash, экспортируемую как модули ES, а неlodash
(CommonJS).lodash-es
Содержит package.json"sideEffects": false
, который уведомляет webpack 4 о том, что все файлы внутри пакета не имеют побочных эффектов (см. https://webpack.js.org/guides/tree-shaking/#mark-the-file-as-side). без эффекта ).Эта информация крайне важна для встряхивания дерева, поскольку упаковщики модулей не удаляют файлы встряхивания дерева, которые могут содержать побочные эффекты, даже если их экспортированные элементы нигде не используются.
редактировать
Начиная с версии 1.9.0, Parcel также поддерживает
"sideEffects": false
, поэтомуimport { has } from 'lodash-es';
его также можно связать с Parcel. Он также поддерживает расшатывание деревьев модулями CommonJS, хотя, скорее всего, расшатывание дерева модулей ES более эффективно, чем CommonJS, согласно моему эксперименту .источник
import { ... } from 'lodash-es';
Мой пакет, который по-прежнему включает всю библиотеку.--module
опцию компилятора какes6
,es2015
илиesnext
.modules: false
так, чтобы они не передавались в CommonJS. Сейчас я использую решение Брюса, которое, кажется, работает. Спасибо за ваш вклад, я уверен, что это работает, но у меня просто нет настройки для этого.import has from 'lodash-es/has'
иimport {has} from 'lodash-es'
оба варианта делают treehaking при использованииwebpack-4
Импорт определенных методов внутри фигурных скобок
Плюсы:
Минусы:
источник
_.map()
синтаксис, чтобы было понятно, что используется внешняя библиотека. Является лиimport _ from 'lodash'
столь же эффективным , как ваше предложение или есть другой способ быть в состоянии использовать этот синтаксис?_.map()
синтаксис. Удалось ли вам найти способ сохранить это, выполняя импорт es6 и тряску деревьев?Если вы используете babel, вы должны проверить babel-plugin-lodash , он выберет те части lodash, которые вы используете для себя, меньше хлопот и меньшую связку.
У него есть несколько ограничений :
источник
Вы можете импортировать их как
или как
второй значительно оптимизирован, чем первый, потому что он загружает только необходимые модули
затем используйте как это
источник
Импортировать Lodash в версии
4.17.15
источник