Есть ли стоимость производительности при использовании нескольких импортов вместо одного именованного импорта

Мне интересно, есть ли затраты на производительность, если мы делаем множественный импорт, например:

import { wrapper } from './components/wrapper';
import { error } from './components/error';
import { products } from './components/products';

В каждой папке компонентов у меня есть index.js, и я экспортирую его как названный, например:

export { default as wrapper } from '.wrapper';

По сравнению с:

Импортируйте все файлы как именованные импорты из одного и того же источника, например:

import {
   wrapper,
   error,
   products,
 } from './components';

В папке components у меня есть индекс, где я собираю и экспортирую все файлы, например:

export { wrapper } from '...';
export { error } from '...';
export { products } from '...';

person Theo Itzaris    schedule 06.03.2020    source источник
comment
Я не знаю о производительности, но я сделаю это, когда мне придется повторять общий импорт нескольких файлов. Легче поменять одно место вместо 10+   -  person epascarello    schedule 06.03.2020
comment
Это зависит от того, идете ли вы в комплекте. например. Webpack и т. д., или вы используете браузер import?, если вы используете браузеры import, то использование другого файла с именем ./components будет еще одним вызовом на сервер, поэтому теоретически может быть медленнее. Я говорю теория, потому что использование http2/spdy также может свести на нет этот эффект.   -  person Keith    schedule 06.03.2020
comment
почему вас вообще волнует производительность?   -  person Jonas Wilms    schedule 06.03.2020
comment
@JonasWilms Все должны заботиться о производительности. Но я не уверен, что это то, что вы имели в виду, а лучше не оптимизируйте заранее.   -  person Keith    schedule 06.03.2020


Ответы (2)


Согласно спецификации ES262 операторы import и export просто предоставляют информацию о зависимостях между модулями для движка. Как загружаются модули в конечном итоге, зависит от движка (однако есть несколько ограничений). Таким образом, существует ли на самом деле разница между импортом из источника и импортом реэкспорта, зависит от среды.

Каковы бы ни были различия, вероятно, они не имеют значения. Выберите то, что лучше всего подходит для вас.

person Jonas Wilms    schedule 06.03.2020

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

person Kevin Gilbert    schedule 06.03.2020