代码生成

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

代码生成非常重要,因为它让代码块能够实际执行操作,例如求解算术表达式、让角色在迷宫中移动或配置网店!

您无法直接“运行”代码块。而是生成代码字符串,然后执行这些字符串。

语言代码生成器

如需生成代码,您必须选择要生成哪种基于文本的语言。这是因为每种语言都有自己的代码生成器。

语言代码生成器(通常称为代码生成器)是一个类,用于处理生成特定于给定语言(但不特定于单个代码块)的代码的规则。例如,它会处理格式设置注释、缩进语句和引用字符串等操作。

Blockly 提供了 5 个内置代码生成器:

  • JavaScript ES5
  • Python 3
  • Lua 5.1
  • Dart 2
  • PHP 7

如果此列表中未包含您要为其生成代码的语言,您可以创建自定义语言代码生成器。如需查看一个简单示例,请参阅构建自定义生成器 Codelab,该 Codelab 会创建一个 JSON 语言代码生成器。如需查看更复杂的示例,请参阅 JavaScript 代码生成器。请注意,您还需要为要使用的所有内置块编写块代码生成器。

代码块生成器

每个分块负责生成自己的代码。创建块时,您需要为要支持的每种语言编写单独的块代码生成器。

代码块生成器是一种函数,用于将该代码块的代码作为字符串返回。例如,用于比较两个数字的代码块会返回一个形式为 'a < b' 的字符串,而表示 if 语句的代码块会返回一个形式为 'if (...) {\n...\n};\n' 的字符串。

import {javascriptGenerator} from 'blockly/javascript';
import {pythonGenerator} from 'blockly/python';

// Write block-code generators for JavaScript and Python.
javascriptGenerator.forBlock['my_custom_block'] = function(block, generator) { /* ... */ };
pythonGenerator.forBlock['my_custom_block'] = function(block, generator) { /* ... */ };

代码块生成器由语言代码生成器调用。

如需了解详情,请参阅分块代码生成器

生成和运行代码

您的应用可以随时生成代码。例如,它可能会在最终用户点击按钮时或用户每次进行更改时生成代码。

生成代码后,您需要确定如何执行该代码。决定如何执行它非常依赖于应用,超出了 Blockly 的范围。

如需了解详情,请参阅生成和运行代码