Javascript 块:代码变量
我刚刚发现了“blockly”,这正是我想要将我的webApp提升到一个新水平的地方。 我的问题是,我真的不明白如何启动python或js代码变量 这是我的街区: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.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) {
...