Javascript 块:代码变量

Javascript 块:代码变量,javascript,python,variables,blockly,Javascript,Python,Variables,Blockly,我刚刚发现了“blockly”,这正是我想要将我的webApp提升到一个新水平的地方。 我的问题是,我真的不明白如何启动python或js代码变量 这是我的街区: Blockly.Language.myapp_ifdo = { helpUrl: '', init: function() { this.setColour(210); this.appendDummyInput() .appendTitle("if") .appendTitle

我刚刚发现了“blockly”,这正是我想要将我的webApp提升到一个新水平的地方。 我的问题是,我真的不明白如何启动python或js代码变量

这是我的街区:

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('');
  }
};
在我的“template.soy”文件中,我有以下内容:

<block type="myapp_ifdo"></block>

希望我足够清楚。。。 谢谢你的帮助


关于这一点,

如果您使用内置块变量和其他构造,内置python生成器将为您解决这一问题

代码演示使用函数从块生成代码。处理完所有块后,它将调用生成器的
finish
函数来预先结束变量声明

您可以在以下内容中看到自己的
完成


如果无法使用Blockly中的内置构造,则需要滚动自己的生成器代码。您可以从Blockly开始使用此代码,尽管这会很棘手,因为您需要维护自己的变量声明列表。

很抱歉造成混淆,但是如果变量恰好未声明,您这样做只是为了防止语法错误吗?另外,blockly内置了
if
、相等运算符和变量,因此您不需要自己滚动。我知道blockly内置了变量生成器,但我找不到在我的情况下使用它的方法。在提供的演示中,变量会自动初始化,我只想做同样的事情来生成干净的代码!您是否尝试过运行Blockly.Generator.workspaceToCode('Python')
code
演示应用程序那样?内置生成器应该负责为您设置这些声明。您看到了这一点,但不知道在“我的代码”中将其写入何处您应该能够直接从应用程序代码调用
workspaceToCode
。具体怎么做取决于你的应用程序,你是否使用AJAX将代码发送到后端,向用户显示代码,等等……你是说我应该在最后生成代码?好的,我试试这个。但是如果你尝试这个演示变量init是动态生成的(他们使用我不使用的var对象)@user2196728-你可以随时生成代码,我的观点是,当你这样做的时候,你需要使用一个算法,比如Blockly使用的算法,然后用一个添加变量声明的结束过程来完成。
humidity = None
if humidity >= '60':
  pass
<block type="myapp_ifdo"></block>
/**
 * Prepend the generated code with the variable definitions.
 * @param {string} code Generated code.
 * @return {string} Completed code.
 */
Blockly.Python.finish = function(code) { 
...