代码生成

代码生成是将工作区上的块转换为可执行的代码字符串的过程。

代码生成极为重要,因为借助代码生成功能,您的块能够实际执行一些操作,例如计算算术表达式、在迷宫中移动字符或配置网店!

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 的讨论范围之内。

如需详细了解执行代码的方法,请参阅代码执行