Ứng dụng của bạn có thể tạo mã bất cứ lúc nào. Ví dụ: hàm này có thể tạo mã khi người dùng cuối nhấp vào một nút hoặc mỗi khi người dùng thực hiện thay đổi.
Để biết thông tin tổng quan về việc tạo mã, hãy xem phần Tạo mã.
Nhập trình tạo mã ngôn ngữ
Để tạo mã, bạn cần có trình tạo mã ngôn ngữ. Bạn có thể nhập trình tạo mã ngôn ngữ bằng bất kỳ phương thức nào sau đây.
Mô-đun
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
Bạn phải thêm trình tạo sau khi thêm 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);
Tập lệnh cục bộ
Bạn phải thêm trình tạo sau khi thêm 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);
Tạo mã
Để tạo mã, hãy sử dụng hàm workspaceToCode
của trình tạo.
const code = javascriptGenerator.workspaceToCode(workspace);
Cập nhật liên tục
Tính năng cập nhật liên tục cho phép bạn hiển thị hoặc chạy mã bất cứ khi nào người dùng thực hiện thay đổi. Việc tạo mã là một thao tác nhanh chóng, vì vậy, việc này sẽ ít ảnh hưởng đến hiệu suất. Bạn có thể thực hiện việc này bằng cách sử dụng trình nghe sự kiện.
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);
Thêm mã lời mở đầu hoặc mã sau thư
Sau khi tạo mã, bạn có thể tuỳ ý đưa mã vào trước hoặc sau khi kết thúc mã đã tạo.
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;
Mã lời mở đầu thường được dùng để đưa các định nghĩa bên ngoài vào đầu mã. Mã hậu kỳ thường được dùng để gọi các hàm nhằm bắt đầu hành vi ở cuối mã.
Nếu mã được tạo của bạn có thể chạy nguyên trạng, thì bạn không cần thêm phần mở đầu hoặc phần kết.
Thực thi mã
Sau khi tạo mã, bạn cần tìm hiểu cách thực thi mã đó. Việc quyết định cách thực thi hàm này phụ thuộc vào từng ứng dụng và nằm ngoài phạm vi của Blockly.
Nếu bạn muốn thực thi mã JavaScript, hãy xem phần Tạo và chạy JavaScript. Bài viết này thảo luận về một số tính năng đặc biệt của trình tạo mã JavaScript, cũng như JSInterpreter mà nhóm Blockly đề xuất là một cách để thực thi JavaScript một cách an toàn.
Các ngôn ngữ khác yêu cầu các công cụ khác.