إنّ إنشاء الرموز هو عملية تحويل القيود المفروضة على مساحة عمل إلى سلسلة من التعليمات البرمجية التي يمكن تنفيذها.
يُعتبر إنشاء الرموز أمرًا في غاية الأهمية لأنّه يتيح لك تنفيذ إجراءات فعلية، مثل تقييم التعبيرات الحسابية، وتحريك حرف من خلال متاهة، أو تهيئة متجر عبر الإنترنت!
لا يمكنك "الجري" بشكل مباشر. وبدلاً من ذلك، تنشئ سلاسل تعليمات برمجية، ثم وتنفيذها.
أدوات إنشاء الرموز
لإنشاء رمز برمجي، عليك اختيار لغة النص المطلوبة. الإنشاء.
منشئ الرموز هي فئة تتعامل مع قواعد إنشاء التعليمات البرمجية خاصة بلغة معينة، ولكن ليس بجزء واحد. بالنسبة سبيل المثال، تتعامل مع أشياء مثل تنسيق التعليقات وعبارات المسافات البادئة الاقتباس من السلاسل.
// javascriptGenerator is a code generator that makes javascript strings.
import {javascriptGenerator} from 'blockly/javascript';
const code = javascriptGenerator.workspaceToCode(myWorkspace);
يوفر Blockly 5 أدوات إنشاء رموز مضمنة:
- JavaScript ES5
- بايثون 3
- لوا 5.1
- لعبة الرشق بالسهام 2
- 7 بيزو فلبيني
يمكنك استيراد واستخدام المولدات من خلال إحدى الطرق التالية:
الوحدات
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';
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
عليك تضمين المُنشئ بعد تضمين 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>
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);
النصوص البرمجية المحلية
عليك تضمين المُنشئ بعد تضمين 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>
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);
إذا لم تتضمّن هذه القائمة اللغة التي تريد إنشاء رمز لها، يمكنك إنشاء أداة إنشاء رموز مخصّصة
أدوات إنشاء رموز الحظر
يكمن الجزء الثاني من عملية إنشاء الرمز البرمجي في تحديد الرموز البرمجية المحظورة الإنشاء. يجب تنفيذ هذا الإجراء لكل جزء ولكل لغة على حدة التي نريد إنشاءها.
javascriptGenerator.forBlock['my_custom_block'] = function(block, generator) { /* ... */ }
تختلف آلية عمل أدوات إنشاء الرموز باختلاف أنواع الحظر:
لكنها تتطلب جميعها جمع القيم من الحقول، جمع الوحدات الداخلية" ثم إنشاء التسلسل تلك السلاسل.
الإنشاء
يمكن إنشاء الملفات عندما يطلبها المستخدم النهائي (على سبيل المثال، عندما انقر فوق الزر)، أو يمكن أن يتم ذلك بشكل مستمر.
تسمح لك التحديثات المستمرة بعرض الرمز أو تشغيله كلما أجرى المستخدم التغيير. عملية إنشاء الرموز عملية سريعة، لذلك ليس هناك أداء ضعيف. تأثير للقيام بذلك. يتم ذلك باستخدام أداة معالجة الأحداث.
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);
رمز المقدمة أو الرمز البريدي
بعد إنشاء التعليمة البرمجية، يمكنك تضمين (اختياري) تمهيد أو التعليمة البرمجية للتمهيد في بداية أو نهاية التعليمة البرمجية التي تم إنشاؤها.
let code = javascriptGenerator.workspaceToCode(workspace);
// Add a preamble and a postscript to the code.
code = `const def = 'some value';\n${code}\nkickOffSomeFunction();\n`;
تُستخدم التعليمات البرمجية المقدمة عادةً لتضمين تعريفات خارجية في البداية من التعليمات البرمجية. يتم عادةً استخدام الرمز البريدي لاستدعاء الدوال لبدء السلوك في نهاية التعليمة البرمجية.
إذا كانت التعليمة البرمجية التي تم إنشاؤها قابلة للتشغيل كما هي، فليست هناك حاجة لتضمين تمهيد أو ملحق.
التنفيذ
بعد إنشاء التعليمة البرمجية، عليك معرفة كيفية تنفيذها. تحديد كيفية تنفيذه أمر محدد للغاية وخارج النطاق من Blockly.
بالنسبة إلى رمز JavaScript، يوصي فريق Blockly باستخدام JSInterpreter تتطلب اللغات الأخرى أدوات أخرى.