Aplikacja może wygenerować kod w dowolnym momencie. Może na przykład generować kod, gdy użytkownik kliknie przycisk lub dokona zmiany.
Informacje ogólne na temat generowania kodu znajdziesz w artykule Generowanie kodu.
Importowanie generatora kodów językowych
Aby wygenerować kod, musisz użyć generatora kodów językowych. Generatory kodu językowego możesz importować na jeden z tych sposobów.
Moduły
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
Musisz uwzględnić generator po uwzględnieniu 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);
Skrypty lokalne
Musisz uwzględnić generator po uwzględnieniu 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);
Generowanie kodu
Aby wygenerować kod, użyj funkcji workspaceToCode
generatora.
const code = javascriptGenerator.workspaceToCode(workspace);
Ciągłe aktualizacje
Ciągłe aktualizacje umożliwiają wyświetlanie lub uruchamianie kodu za każdym razem, gdy użytkownik wprowadzi zmianę. Generowanie kodu to szybka operacja, więc nie ma to większego wpływu na wydajność. Można to zrobić za pomocą detektora zdarzeń.
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);
Dodawanie kodu w preambuli lub postscriptum
Po wygenerowaniu kodu możesz opcjonalnie dołączyć kod przed jego początkiem lub po jego zakończeniu.
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;
Kod w preambule jest zwykle używany do umieszczania definicji zewnętrznych na początku kodu. Kod końcowy służy zwykle do wywoływania funkcji, które uruchamiają działanie na końcu kodu.
Jeśli wygenerowany kod można uruchomić bez zmian, nie musisz dołączać wstępu ani postscriptum.
Wykonywanie kodu
Po wygenerowaniu kodu musisz ustalić, jak go uruchomić. Sposób wykonania zależy od aplikacji i nie jest objęty zakresem Blockly.
Jeśli chcesz wykonać kod JavaScript, zapoznaj się z artykułem Generowanie i wykonywanie kodu JavaScript. W tym artykule omawiamy niektóre specjalne funkcje generatora kodu JavaScript oraz JSInterpreter, który zespół Blockly zaleca jako sposób bezpiecznego wykonywania kodu JavaScript.
Inne języki wymagają innych narzędzi.