La tua applicazione può generare codice in qualsiasi momento. Ad esempio, potrebbe generare codice quando l'utente finale fa clic su un pulsante o ogni volta che apporta una modifica.
Per una panoramica della generazione di codice, consulta Generazione di codice.
Importa un generatore di codici di lingua
Per generare il codice, è necessario un generatore di codici lingua. Puoi importare i generatori di codice lingua con uno dei seguenti metodi.
Moduli
import {javascriptGenerator} from 'blockly/javascript';
import {pythonGenerator} from 'blockly/python';
import {phpGenerator} from 'blockly/php';
import {luaGenerator} from 'blockly/lua';
import {dartGenerator} from 'blockly/dart';
// Generate code for all the blocks in the workspace.
const jsCode = javascriptGenerator.workspaceToCode(workspace);
const pythonCode = pythonGenerator.workspaceToCode(workspace);
const phpCode = phpGenerator.workspaceToCode(workspace);
const luaCode = luaGenerator.workspaceToCode(workspace);
const dartCode = dartGenerator.workspaceToCode(workspace);
Unpkg
Devi includere il generatore dopo aver incluso Blockly.
<script src="https://unpkg.com/blockly"></script>
<script src="https://unpkg.com/blockly/javascript_compressed"></script>
<script src="https://unpkg.com/blockly/python_compressed"></script>
<script src="https://unpkg.com/blockly/php_compressed"></script>
<script src="https://unpkg.com/blockly/lua_compressed"></script>
<script src="https://unpkg.com/blockly/dart_compressed"></script>
// Generate code for all the blocks in the workspace.
const jsCode = javascript.javascriptGenerator.workspaceToCode(workspace);
const pythonCode = python.pythonGenerator.workspaceToCode(workspace);
const phpCode = php.phpGenerator.workspaceToCode(workspace);
const luaCode = lua.luaGenerator.workspaceToCode(workspace);
const dartCode = dart.dartGenerator.workspaceToCode(workspace);
Script locali
Devi includere il generatore dopo aver incluso Blockly.
<script src="blockly_compressed.js"></script>
<script src="javascript_compressed.js"></script>
<script src="python_compressed.js"></script>
<script src="php_compressed.js"></script>
<script src="lua_compressed.js"></script>
<script src="dart_compressed.js"></script>
// Generate code for all the blocks in the workspace.
const jsCode = javascript.javascriptGenerator.workspaceToCode(workspace);
const pythonCode = python.pythonGenerator.workspaceToCode(workspace);
const phpCode = php.phpGenerator.workspaceToCode(workspace);
const luaCode = lua.luaGenerator.workspaceToCode(workspace);
const dartCode = dart.dartGenerator.workspaceToCode(workspace);
Genera codice
Per generare il codice, utilizza la funzione workspaceToCode
del generatore.
const code = javascriptGenerator.workspaceToCode(workspace);
Aggiornamenti continui
Gli aggiornamenti continui ti consentono di mostrare o eseguire il codice ogni volta che l'utente apporta una modifica. La generazione di codice è un'operazione rapida, pertanto l'impatto sulle prestazioni è ridotto. Questo viene fatto utilizzando un listener di eventi.
const supportedEvents = new Set([
Blockly.Events.BLOCK_CHANGE,
Blockly.Events.BLOCK_CREATE,
Blockly.Events.BLOCK_DELETE,
Blockly.Events.BLOCK_MOVE,
]);
function updateCode(event) {
if (workspace.isDragging()) return; // Don't update while changes are happening.
if (!supportedEvents.has(event.type)) return;
const code = javascriptGenerator.workspaceToCode(workspace);
document.getElementById('textarea').value = code;
}
workspace.addChangeListener(updateCode);
Aggiungere codice di preambolo o postscript
Dopo aver generato il codice, puoi includere facoltativamente del codice prima dell'inizio o dopo la fine del codice generato.
let code = javascriptGenerator.workspaceToCode(workspace);
// Add a preamble and a postscript to the code.
const preamble = 'import {MyLibrary} from \'/path/to/my/library\';\n'
const postscript = 'MyLibrary.myKickoffFunction();\n';
code = preamble + code + postscript;
Il codice del preambolo viene solitamente utilizzato per includere definizioni esterne all'inizio del codice. Il codice Postscript viene solitamente utilizzato per chiamare funzioni per avviare il comportamento alla fine del codice.
Se il codice generato è eseguibile così com'è, non è necessario includere un preambulo o un post scriptum.
Esegui codice
Dopo aver generato il codice, devi capire come eseguirlo. Decidere come eseguirlo è molto specifico per l'applicazione e non rientra nell'ambito di Blockly.
Se vuoi eseguire codice JavaScript, consulta Genera ed esegui JavaScript. Questo articolo illustra alcune funzionalità speciali del generatore di codice JavaScript, nonché JSInterpreter, che il team di Blockly consiglia come metodo per eseguire JavaScript in sicurezza.
Per altre lingue sono necessari altri strumenti.