Вреден ли реэкспорт модулей для сотрясения деревьев? - PullRequest
0 голосов
/ 20 февраля 2019

Я вступил в спор с моими коллегами, на который мы не можем найти ответ из какого-либо официального источника (MDN, документация веб-пакета, ...).Мои исследования также не принесли много .Кажется, есть сомнения , даже если речь идет об импорте .

Нашей настройкой являются Webpack, Babel и типичное приложение React / Redux.Возьмите этот пример:

export * from './actions';
export * from './selectors';
export * from './reducer';

export { default } from './reducer';

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

Однако некоторые из моих коллег считают, что-работники, которые export * from могут фактически навредить webpack способностям сотрясения дерева, обманывая его, полагая, что экспорт используется, когда он фактически просто реэкспортируется.

Так что мойвопрос в том, есть ли факты, подтверждающие или опровергающие это?

1 Ответ

0 голосов
/ 21 февраля 2019

Считается, что export * from может нанести ущерб возможностям сотрясения дерева веб-пакета, обманывая его, полагая, что экспорт используется, когда он фактически просто реэкспортируется.

Нет, объявления импорта / экспорта ничего не делают, но устанавливают псевдоним экспортируемой переменной, они не считаются «использованием».Учитывая их семантику, они специально отслеживаются любым компоновщиком и не будут отрицательно влиять на тряску деревьев.

Даже правильно сделанный переименованный псевдоним не нарушит:

export { X as Y } from '…';

import { X as Y } from '…';
export { Y }

import { X } from '…';
export { X as Y }

но использование в выражении будет считаться оптимизацией использования и прерывания (несложной):

import { X } from '…';
export const Y = X; // avoid!

Так что мой вопрос:Есть ли факты, подтверждающие или опровергающие это?

Вы можете просто попробовать и посмотреть, как это работает.

...