Vyhledávání na webu

javascript - Importovat { map } z 'lodash', 'rxjs', 'ramda' současně, aniž by byla ohrožena čitelnost


Jak lze importovat map nebo merge či jakoukoli jinou funkci z více importů?

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

Očividná odpověď je:

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

Ale to je ošklivé a zakrývá kód. Považuji to za hack, ne za řešení, ale za obejití kvůli omezením statické analýzy

Mohu vymyslet jiný způsob:

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

Nicméně komunita JS toto odsuzuje kvůli důvodům tree-shakingu. Přesto však věřím, že je to přehnané, ušetří to jen 45 kB.

Odpověď č. 1

V podstatě si můžete vytvořit vlastní balíčky utilit. Například:

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

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

Odpověď č. 2

Upřímně řečeno, záleží na tom, co ty nebo ten, pro koho pracuješ, považujete za důležitější. Někdy je těch extra 45 kB hrozné, ale většinou, a zvláště u osobních projektů, by na tom nikomu nemělo záležet. A pokud to vaše programování udělá efektivnější, jděte s tím, co pro vás funguje nejlépe.