Generación de códigos

La generación de código es el proceso de convertir los bloques de un lugar de trabajo en una cadena de código que se puede ejecutar.

La generación de código es extremadamente importante, ya que es lo que permite que los bloques realmente tareas, como evaluar expresiones aritméticas, mover un personaje por un laberinto o configurar una tienda en línea.

Blockly no "ejecuta" bloques directamente. En su lugar, generas cadenas de código y, luego, ejecútalas.

Generadores de código

Para generar código, usa una instancia de generador de código.

En este fragmento de código, se muestra cómo generar código JavaScript para los bloques en un lugar de trabajo:

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

const code = javascriptGenerator.workspaceToCode(myWorkspace);

Para obtener más información sobre los diferentes generadores de código que proporciona Blockly y cómo acceder a ellos, consulta Descripción general del generador de códigos.

Generadores de código de bloque

Cada bloque tiene asociado un generador de códigos de bloque que define el código que genera. Se debe definir un generador de código de bloque para cada lenguaje individual que deseas generar.

Este fragmento de código define un generador de código de bloque de JavaScript para un bloque "Avanzar":

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

Si quieres obtener más información para definir tus generadores de código de bloque, consulta Generadores de código de bloque.

Ejecución

Después de generar el código, necesitas descifrar cómo ejecutarlo. Decidir cómo ejecutarlo es específico de la aplicación y está fuera del alcance de Blockly.

Para obtener más información sobre cómo ejecutar código, consulta Ejecución de código.