javascript - Tuo { map } kirjastoista 'lodash', 'rxjs', 'ramda' samaan aikaan vaarantamatta luettavuutta


Kuinka tuodaan map tai merge tai mikä tahansa muu funktio useista tuonnista?

import { map } from 'lodash';
import { map } from 'rxjs/operators';
import { map } from 'ramda';

Ilmeinen vastaus on:

import { map as _map } from 'lodash';
import { map as rxMap } from 'rxjs/operators';
import { map as RMap } from 'ramda';

Mutta tämä on ruma ja peittää koodin. Pidän tätä hakkerointina, ei ratkaisuna, vaan kiertotienä staattisen analyysin rajoitusten vuoksi

Voin ajatella toisen tavan:

import * as _ from 'lodash';
import { map } from 'rxjs/operators';
import * as R from 'ramda';

Kuitenkin JS-yhteisö suhtautuu tähän kielteisesti puiden ravistelun (tree-shaking) syistä. Uskon kuitenkin, että se on liioiteltua, säästäen vain 45kb.

Vastaus #1

Periaatteessa voit luoda omia util-pakettejasi. Esimerkiksi:

// utils/lodash.js
export { map, get, set } from 'lodash';

// yourScript.js
import * as _ from 'utils/lodash';

Vastaus #2

Se riippuu rehellisesti siitä, mitä sinä tai kenelle tahansa työskentelet arvostaa enemmän. Joskus ylimääräinen 45 kt on kauhea, mutta useimmiten, ja erityisesti henkilökohtaisessa projektissa, sen ei pitäisi kiinnostaa ketään. Ja jos se tekee ohjelmoinnistasi tehokkaampaa, valitse se, mikä toimii sinulle parhaiten.