funcs.js
export function hello() {
echo 'foo'
}
export function foo() {
echo 'bar'
}
index.js
import * as Funcs from './funcs.js' // import module, does tree-shaking work?
import { hello } from './funcs.js' // optimise imports, potentially clashes with other imports
import { hello } as Funcs from './funcs.js' // what should make sense, but isn't supported syntax
// this should be straight forward...
Funcs.hello()
// vs having some random function on top level scope
hello()
// and this shouldn't work if I didn't import it
Funcs.foo()
Это мой вопрос.Имеет ли какое-либо значение дрожание дерева, если я использую форму 1 против формы 2. Форма 2 предпочтительнее для выразительности, но форма 1 - это единственный способ, которым я могу получить все в модуле / пространстве имен.Форма 3 была бы моим предложением, но, возможно, я не знаю кое-что, против чего кто-то еще не спорил, почему это не должно поддерживаться.
Я понятия не имею, куда пойти предложить это, или дажесоздайте плагин babel для этого.
Редактировать: для контекста я работаю с некоторыми более новыми библиотеками (rxjs), которые не предоставляют экспорт по умолчанию, и полагаюсь на разработчиков, чтобы загрузить все необходимые им функции.Так что я не могу контролировать этот экспорт.
Редактировать: было предложено обойти обходной путь: просто создать глобальный файл импорта, который импортирует все глобально необходимые импортные файлы, и экспортирует все это в виде модуля, поэтому я сейчас и делаю.
Редактировать: найдено es-обсудить.Пойду туда вместо того, чтобы надеяться на обсуждение.
https://esdiscuss.org/topic/syntax-to-pick-named-exports-from-a-module
https://esdiscuss.org/topic/proposal-importing-selected-chucks-of-a-module-into-an-object
Редактировать: наиболее интересное обсуждение можно найти здесь.
https://esdiscuss.org/topic/import-foo-bar-as-obj-from-module