javascript - es2015 模块 - 如何动态命名导出

标签 javascript module ecmascript-6

我想创建一个模块 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

你不能。 importexport 语句是专门以这种方式设计的,因为它们必须是静态可分析的,即导入和导出名称必须在之前已知代码被执行。

如果您需要一些动态的东西,那么做您已经在做的事情:导出“ map ”(或对象)。人们仍然可以使用解构来获得他们想要的东西:

const {div} = h;

关于javascript - es2015 模块 - 如何动态命名导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33684154/

相关文章:

javascript - 从 javascript 数组填充 HTML 表格

go - 当使用没有设置 GOPATH 的模块时,go 将导入放在哪里?

javascript - 在过滤方法 React/JS 中删除多个项目

javascript - meteor 方法函数返回不起作用

javascript - Titanium 保存最后查看的窗口的状态

javascript - 在Javascript中提取从子字符串开始的部分的函数?

javascript - 在 NVD3 和 ClojureScript 中设置图表的静态刻度数

go - 在 Go 编程中使用 golang-Debian 包

javascript - 如何用 ES6 类模拟私有(private)作用域?

javascript - 为什么扩展语法使数组内的对象静音