Blockly 于 2025 年 11 月 10 日移至 Raspberry Pi Foundation!请阅读博文和常见问题解答。
Google uses AI technology to translate content into your preferred language. AI translations can contain errors.
生成代码
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
代码生成是将工作区中的代码块转换为可执行的代码字符串的过程。
代码生成非常重要,因为它让代码块能够实际执行操作,例如求解算术表达式、让角色在迷宫中移动或配置网店!
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 的范围。
如需详细了解执行代码的方法,请参阅生成和运行代码。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-07-25。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-07-25。"],[],["Code generation converts blocks into executable code strings. Blockly utilizes code generator instances, like `javascriptGenerator`, to transform a workspace's blocks into code. Each block requires a block-code generator, defining its code output, demonstrated in the example with a \"move forward\" block. After code generation, the code must be executed, but this execution process is application-specific and not part of Blockly's core functionality.\n"]]