Описание вопроса в простом примере
Давайте получим файл A, который имеет 2 именованных экспорта:
//FileA.js
export function1(){}
export function2(){}
Давайте сравним 3 случая:
Случай 1:
//FileB.js:
import { function1 } from './A'
function1()
//FileC.js:
import { function2 } from './A'
function2()
Случай 2:
//FileB.js:
import * as f from './A'
f.function1()
//FileC.js:
import * as f from './A'
f.function2()
Случай 3: Файл A экспортирует именованный объект, содержащий функцию:
//FileA.js
export const f = {
function1: () => {},
function2: () => {}
}
//FileB.js:
import { f } from './A'
f.function1()
//FileC.js:
import { f } from './A'
f.function2()
Вопрос в том, какой случай более эффективен память- и с точки зрения производительности, учитывая объединение этих модулей с Webpack (и объяснение, почему было бы также здорово - потому что это выглядит как в в результирующем пакете должны быть все одинаковые функции ...)?
Очевидно, что в этом простом случае производительность почти одинакова (это дано только для простой иллюстрации).