【发布时间】:2021-10-15 05:52:17
【问题描述】:
我有一个medium-sized Python project,我正在尝试将其转入 ES6。该项目的一部分是很多内部结构,我将它藏在一个“私人”包中(bezoar._model)。我有一个汇总 Python 模块 bezoar.model,它通过简单地导入它们来导出 bezoar._model 中的前置组件。在 Python 中,任何被导入的东西都会被隐式导出。我注意到这似乎(?)是一种标准做法,包括一些modules provided by the standard library in CPython。
在 ES6 中,情况并非如此。必须明确地export foo from jsmodule 才能从另一个模块重新导出符号。我手动修改了生成的 ES6 以将 import foo from jsmodule 替换为 export foo from jsmodule 并且它按预期工作。
有什么办法可以说服 Transcrypt 为我做这件事?
我尝试使用__pragma__('js', ...),但它在导入部分之后插入了代码,这(显然)是 ES6 不允许的。
示例
_modfoo.py:
def foo():
pass
rollup.py:
from _modfoo import foo
transcrypt 生成rollup.js:
import {foo} from './_modfoo.js'
var __name__ = 'rollup'
重新导出rollup.js的版本:
export {foo} from './_modfoo.js'
var __name__ = 'rollup'
【问题讨论】:
标签: javascript python transcrypt