es2015 模块 - 如何动态命名导出
es2015 modules - how to name exports dynamically
我想创建一个模块 h
,它为每个 HTML 元素导出一个函数。用法如下:
import {div, p} from 'h'
const myDiv = div(p('some text'))
模块的定义如下:
const h = {}
for (let tagName of ['div', 'p', /* ... */]) {
h[tagName] = (...children) => {
// ...
}
}
export const div = h.div
export const p = h.p
/* ... */
我不喜欢每个导出都必须明确列出。我如何使这些动态化?
how to name exports dynamically
你不能。 import
和 export
语句是专门以这种方式设计的,因为它们必须是静态可分析的,即在执行代码之前 必须知道导入和导出名称 .
如果您需要一些动态的东西,那么做您已经在做的事情:导出“地图”(或对象)。人们仍然可以使用解构来获得他们想要的东西:
const {div} = h;
我想创建一个模块 h
,它为每个 HTML 元素导出一个函数。用法如下:
import {div, p} from 'h'
const myDiv = div(p('some text'))
模块的定义如下:
const h = {}
for (let tagName of ['div', 'p', /* ... */]) {
h[tagName] = (...children) => {
// ...
}
}
export const div = h.div
export const p = h.p
/* ... */
我不喜欢每个导出都必须明确列出。我如何使这些动态化?
how to name exports dynamically
你不能。 import
和 export
语句是专门以这种方式设计的,因为它们必须是静态可分析的,即在执行代码之前 必须知道导入和导出名称 .
如果您需要一些动态的东西,那么做您已经在做的事情:导出“地图”(或对象)。人们仍然可以使用解构来获得他们想要的东西:
const {div} = h;