我刚刚发现了“blockly”,这正是我一直在寻找的将我的 webApp 提升到一个新水平的方法。 我遇到的问题是我不太明白如何启动 python 或 js 代码变量。
这是我的 block :
Blockly.Language.myapp_ifdo = {
helpUrl: '',
init: function() {
this.setColour(210);
this.appendDummyInput()
.appendTitle("if")
.appendTitle(new Blockly.FieldDropdown([["Temperature", "Temperature"], ["Humidity", "Humidity"]]), "SENSOR")
.appendTitle(" ")
.appendTitle(new Blockly.FieldDropdown([["=", "="], ["≠", "≠"], ["<", "<"], ["≤", "≤"], [">", ">"], ["≥", "≥"]]), "OPERATOR")
.appendTitle(" ")
.appendTitle(new Blockly.FieldTextInput("0"), "SENSORVALUE");
this.appendStatementInput("DO")
.appendTitle("do");
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
}
};
效果图是:
下拉列表内容:
我正在尝试做的事情:
如果选择“温度”,那么我想在生成代码的开头初始化变量:
temperature = None
if temperature <= '30':
pass
如果选择“湿度”也是一样:
humidity = None
if humidity >= '60':
pass
在我的“template.soy”文件中我有这个:
<block type="myapp_ifdo"></block>
希望我已经足够清楚了... 感谢您的帮助!
问候,
最佳答案
如果您使用内置的 Blockly 变量和其他结构,内置的 Python 生成器将为您处理。
代码演示使用函数Blockly.Generator.workspaceToCode
从 block 中生成代码。一旦处理完所有 block ,它就会调用生成器的 finish
函数来预先添加变量声明。
您可以在 python.js 中亲自查看完成
:
/**
* Prepend the generated code with the variable definitions.
* @param {string} code Generated code.
* @return {string} Completed code.
*/
Blockly.Python.finish = function(code) {
...
如果您不能使用 Blockly 的内置结构,则需要编写自己的生成器代码。您可以使用 Blockly 中的这段代码作为起点,尽管这会很棘手,因为您需要维护自己的变量声明列表。
关于javascript - block 状 : code variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18727093/