Codegenerierung

Bei der Codegenerierung werden die Blöcke eines Arbeitsbereichs in einen Codestring umgewandelt, der ausgeführt werden kann.

Die Codegenerierung ist äußerst wichtig, da sie es Ihren Blöcken ermöglicht, Dinge tatsächlich zu tun, z. B. arithmetische Ausdrücke auszuwerten, ein Zeichen durch ein Labyrinth zu bewegen oder einen Onlineshop zu konfigurieren.

Blockly führt Blockierungen nicht direkt aus. Stattdessen generieren Sie Codestrings und führen diese aus.

Codegeneratoren

Um Code zu generieren, verwenden Sie eine Codegenerator-Instanz.

Dieses Code-Snippet zeigt, wie JavaScript-Code für die Blöcke in einem Arbeitsbereich generiert wird:

// javascriptGenerator is a code generator that makes JavaScript strings.
import {javascriptGenerator} from 'blockly/javascript';

const code = javascriptGenerator.workspaceToCode(myWorkspace);

Weitere Informationen zu den verschiedenen Codegeneratoren, die Blockly bereitstellt, und wie Sie darauf zugreifen können, finden Sie unter Übersicht zum Codegenerator.

Blockcode-Generatoren

Jedem Block ist ein Blockcode-Generator zugeordnet, der definiert, welcher Code generiert wird. Für jede Sprache, die Sie generieren möchten, muss ein Blockcodegenerator definiert werden.

Dieses Code-Snippet definiert einen JavaScript-Blockcode-Generator für einen „Move-Forward“-Block:

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`;
}

Weitere Informationen zum Definieren Ihrer Blockcodegeneratoren finden Sie unter Blockcodegeneratoren.

Umsetzung

Nachdem Sie den Code generiert haben, müssen Sie herausfinden, wie er ausgeführt werden soll. Die Entscheidung, wie sie ausgeführt wird, ist sehr anwendungsspezifisch und liegt außerhalb des Zuständigkeitsbereichs von Blockly.

Weitere Informationen zu Möglichkeiten zum Ausführen von Code finden Sie unter Codeausführung.