Импортируйте {map} из 'lodash', 'rxjs', 'ramda' одновременно, не нарушая читабельность - PullRequest
0 голосов
/ 11 октября 2018

Как один импорт map или merge или любая другая функция из нескольких импортов?

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

Очевидный ответ:

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

Но это некрасиво и затеняет код.Я считаю, что это взлом, а не решение, а обходной путь из-за ограничений статического анализа

Я могу придумать другой способ:

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

Однако сообщество JS осуждает этоиз-за тряски деревьев.Тем не менее, я считаю, что это преувеличено , только экономия 45kb .

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Если вы используете эти функции карты для конкретных случаев использования (наблюдаемые, манипуляции с массивами / объектами и т. Д.) Во всем приложении, вероятно, лучше всего переименовать методы, чтобы отразить конкретный вариант использования вашего приложения.

Я бы относился к ним так же, как если бы у вас было три метода, не относящихся к поставщикам, которые назывались "map".Если вы нашли это в своем собственном коде, вы бы определили, все ли методы делают одно и то же, и если нет, переименуйте их, чтобы они были более точными в отношении того, что они делают.

Например, rxjs.map станетmapObservable и т. д. При выполнении технического обслуживания ваше новое имя будет использоваться в ваших модулях, но выгода будет заключаться в том, что вам придется меньше переключать контекст, чтобы ваши разработчики могли понять, что и почему используется.

ЭтоЭто может быть весьма субъективный вопрос, поскольку ответ может варьироваться в зависимости от команды, соглашений и вашего приложения.

PS Одним из способов сокращения обслуживания может быть предоставление этих методов через оболочку, а такжекоманда использует эту оболочку для этих конкретных функций.

0 голосов
/ 11 октября 2018

Честно говоря, это зависит от того, на что вы / кто бы вы ни работали ради ценностей.Иногда лишние 45 Кбайт ужасны, но большую часть времени, особенно в личном проекте, никого не должно волновать.И если это сделает ваше программирование более эффективным, используйте то, что лучше для вас.

0 голосов
/ 11 октября 2018

В основном вы можете создавать свои собственные пакеты утилит.Например:

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

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