Miałem poniżej informację zwrotną dotyczącą żądania ściągnięcia, zastanawiam się tylko, który sposób jest prawidłowy sposób importowania lodash?
Lepiej wykonaj import z 'lodash / has'. W przypadku wcześniejszej wersji lodash (v3), która sama w sobie jest dość ciężka, powinniśmy importować tylko określony moduł / funkcję, a nie importować całą bibliotekę lodash. Nie jestem pewien co do nowszej wersji (v4).
import has from 'lodash/has';
vs
import { has } from 'lodash';
Dzięki
javascript
lodash
babeljs
Rachunek
źródło
źródło
Odpowiedzi:
import has from 'lodash/has';
jest lepsze, ponieważ lodash przechowuje wszystkie swoje funkcje w jednym pliku, więc zamiast importować całą bibliotekę „lodash” na 100k, lepiej po prostu zaimportowaćhas
funkcję lodash, która może być 2k.źródło
'lodash/has'
nie jest osobnym pakietem. Whas.js
katalogu głównym zwykłego'lodash'
pakietu znajduje się plik iimport has from 'lodash/has'
(lubconst has = require ('lodash/has
) załaduje ten plik. Tam są oddzielne pakiety metody w KMP, ale użyć składni „kropka”:'lodash.has'
. Byłby to również dobry sposób na obejście tego, jeśli nie masz nic przeciwko instalowaniu osobnego pakietu dla każdej metody, której używasz (i potencjalnie sprawia, że jesteśpackage.json
ogromny).import { has } from 'lodash'
działałoby to tak samo, ponieważ reszta zostanie usuniętaimport has from 'lodash-es/has'
składni wstrząsnęłam pełnym drzewem. ze 526 KB na 184 KB, patrz stackoverflow.com/questions/41991178/...Jeśli używasz
webpack 4
, poniższy kod można wytrząsać z drzewa.Punkty do odnotowania;
Moduły CommonJS nie są wstrząsane drzewem, więc zdecydowanie powinieneś użyć
lodash-es
, czyli biblioteki Lodash eksportowanej jako ES Modules, a nielodash
(CommonJS).lodash-es
„Package.json zawiera”"sideEffects": false
, który informuje webpack 4, że wszystkie pliki w pakiecie są wolne od efektów ubocznych (patrz https://webpack.js.org/guides/tree-shaking/#mark-the-file-as-side -efektywne ).Informacje te są kluczowe dla wstrząsania drzewem, ponieważ programy pakujące moduły nie wstrząsają plikami, które prawdopodobnie zawierają skutki uboczne, nawet jeśli ich eksportowane elementy nie są nigdzie używane.
Edytować
Począwszy od wersji 1.9.0, Parcel obsługuje również
"sideEffects": false
, dlategoimport { has } from 'lodash-es';
też można wstrząsać drzewem za pomocą Parcel. Obsługuje także wstrząsanie drzewami modułów CommonJS, chociaż według mojego eksperymentu wstrząsanie drzewem modułów ES jest bardziej wydajne niż CommonJS .źródło
import { ... } from 'lodash-es';
Mój pakiet nadal zawiera całą bibliotekę.--module
opcję kompilatora jakoes6
,es2015
lubesnext
.modules: false
więc nie są one transpilowane do CommonJS. Korzystam teraz z rozwiązania Bruce'a, które wydaje się działać. Dzięki za Twój wkład, jestem pewien, że to działa, ale po prostu nie mam konfiguracji.import has from 'lodash-es/has'
aimport {has} from 'lodash-es'
oba warianty drżą podczas korzystania z drzewwebpack-4
Zaimportuj określone metody w nawiasach klamrowych
Plusy:
Cons:
źródło
_.map()
aby składnia była jasna, że używana jest biblioteka zewnętrzna. Czyimport _ from 'lodash'
równie skuteczna jest twoja sugestia, czy też istnieje inny sposób na użycie tej składni?_.map()
składnię. Czy udało Ci się wymyślić sposób na utrzymanie tego podczas importowania es6 i drżenia drzew?Jeśli używasz babel, powinieneś sprawdzić babel-plugin-lodash , to wybierze części lodash, których używasz dla ciebie, mniej kłopotów i mniejszy pakiet.
Ma kilka ograniczeń :
źródło
Możesz je zaimportować jako
lub jako
drugi jest znacznie zoptymalizowany niż pierwszy, ponieważ ładuje tylko potrzebne moduły
użyj tego w ten sposób
źródło
Importuj Lodash w wersji
4.17.15
źródło