我无法使用transcrypt(版本3.6.95)在多个文件之间拆分代码。作为一个基本示例,我在同一目录中有以下文件:
的index.htm
<html>
<head>
<meta charset="utf-8">
<title>Transcrypt test</title>
</head>
<body>
<div id="box"></div>
<button onclick="myscript.set_box_content()">Set box content</button>
</body>
<script src="__javascript__/myscript.js"></script>
</html>
mymodule.py
def helloworld():
return "Hello world!"
myscript.py
from mymodule import helloworld
def set_box_content():
document.getElementById("box").innerHTML = helloworld()
然后我跑
python -m transcrypt -n mymodule.py
python -m transcrypt -n myscript.py
哪个运行没有错误,并在目录__javascript__中生成mymodule.js,mymodule.mod.js,myscript.js和myscript.mod.js。
当我在Firefox 58中打开index.htm并打开控制台时,它说&#39; TypeError:模块未定义&#39;。我尝试将<script src="__javascript__/mymodule.js"></script>
添加到HTML中,但这没有用。我通读了transcrypt文档的this part,但当我输入-u
时,python -m transcrypt -h
开关没有出现在可用命令列表中。
答案 0 :(得分:2)
单元(编译单元,组件)是一个相对较新的功能,而不是从一开始就在Transcrypt中的模块。 你需要Transcrypt 3.6.101才能使用单位。请注意,由于CPython是一个解释器而不是编译器,因此编译单元的概念在那里不起作用。
单位与模块的组合使用如下所示:
此示例应该让您入门,如果没有,请在评论或编辑中告诉我。
[编辑] 所有单元(与模块相对)应单独编译,因此在示例中:
transcrypt -u .run animals.py
transcrypt -u .com cats.py
transcrypt -u .com dogs.py
因此模块包含带有.run
选项的运行时和带有.com
选项的其他组件。如果需要,可以添加-n
开关。
应将多个单元中使用的模块添加到运行时单元,即使用-u .run
开关编译的模块。