代码生成是将工作区中的代码块转换为可执行的代码字符串的过程。
代码生成非常重要,因为它让代码块能够实际执行操作,例如求解算术表达式、让角色在迷宫中移动或配置网店!
Blockly 不会直接“运行”代码块。而是生成代码字符串,然后执行这些代码。
代码生成器
如需生成代码,您可以使用代码生成器实例。
以下代码段展示了如何为工作区中的块生成 JavaScript 代码:
// javascriptGenerator is a code generator that makes JavaScript strings.
import {javascriptGenerator} from 'blockly/javascript';
const code = javascriptGenerator.workspaceToCode(myWorkspace);
如需详细了解 Blockly 提供的不同代码生成器以及如何访问它们,请参阅语言代码生成器。
代码块生成器
每个代码块都有一个关联的代码块生成器,用于定义其生成的代码。您必须为要生成的每种语言分别定义一个块代码生成器。
以下代码段为“向前移动”块定义了 JavaScript 代码块生成器:
javascriptGenerator.forBlock['my_custom_block'] = function(block, generator) {
const steps = block.getFieldValue('FIELD_NAME');
// moveForward is a function you would have to define yourself and provide
// within your execution context.
return `moveForward(${steps});\n`;
}
如需详细了解如何定义块代码生成器,请参阅块代码生成器。
执行
生成代码后,您需要确定如何执行该代码。决定如何执行它非常依赖于应用,超出了 Blockly 的范围。
如需详细了解执行代码的方法,请参阅生成和运行代码。