ช่อง

ช่องเป็นส่วนสำคัญในการสร้างโค้ดเนื่องจากเป็นค่า ที่ผู้ใช้แก้ไขได้ เช่น สตริง ตัวเลข และสี (และอื่นๆ)

การใส่ค่าของช่องในโค้ดที่สร้างขึ้นจะต้องมีการรับค่าของช่อง การแปลงค่าเป็นสตริงที่ใช้ได้ จากนั้นจึงเชื่อมต่อสตริงกับโค้ดที่เหลือ

import {javascriptGenerator} from 'blockly/javascript';

javascriptGenerator.forBlock['my_custom_block'] = function(block, generator) {
  // Get the field value.
  const fieldValue = block.getFieldValue('MY_FIELD');

  // Concatenate the code.
  const code = `some code ${fieldValue} some more code`;

  // Return the code.
  return code;
}

รับค่า

คุณจะเข้าถึงค่าในช่องได้โดยใช้ getFieldValue ข้อมูลที่ส่งกลับมาจะแตกต่างจากฟิลด์หนึ่ง ดังนั้นคุณควรอ่านเอกสารฟิลด์ในตัวเพื่อดูข้อมูลเกี่ยวกับช่องที่เฉพาะเจาะจงของคุณ ตัวอย่างเช่น ช่องป้อนข้อความจะแสดงข้อความที่ผู้ใช้ป้อนตรงกันทั้งหมด แต่ช่องแบบเลื่อนลงจะแสดงสตริงที่เป็นกลางของภาษาซึ่งเชื่อมโยงกับรายการที่ผู้ใช้เลือก

แปลงค่า

ค่าในช่องส่วนใหญ่จะพร้อมเชื่อมโยงกับสตริงโค้ดทันที อย่างไรก็ตาม ค่าในช่องบางค่าจำเป็นต้องมีการแก้ไขเพิ่มเติมก่อนจึงจะใช้งานได้

สตริง

โดยเครื่องมือสร้างโค้ดจะต้องยกข้อความมาใส่สตริงก่อนจึงจะเชื่อมโยงกันได้

// For a single line text field.
const str = generator.quote_(block.getFieldValue('STR'));

// For a multiline text field.
const str = generator.multiline_quote_(block.getFieldValue('STR'));

ตัวแปร

เครื่องมือสร้างโค้ดต้องขัดเกลาชื่อตัวแปรก่อนจึงจะเชื่อมโยงกันได้ ซึ่งจำเป็นเนื่องจากเหตุผลสองประการ:

  1. ผู้ใช้ป้อนตัวแปรในภาษาที่เลือก ซึ่งหมายความว่าอาจต้องแปลงเป็นอักขระ ASCII เช่น "متغير" จะถูกแปลงเป็น "_D9_85_D8_AA_D8_BA_D9_8A_D8_B1"
  2. ตัวแปรอาจขัดแย้งกับคำที่สงวนไว้ ซึ่งหมายความว่าอาจต้องทำการแก้ไข เพื่อไม่ให้ขัดแย้งกัน ตัวอย่างเช่น "for" จะถูกแปลงเป็น "for2"
const identifier = generator.getVariableName(block.getFieldValue('VAR'));

เชื่อมต่อรหัส

เมื่อได้รับค่าในช่องและแปลงเป็นสตริงแล้ว คุณจะนำค่าในช่องมาต่อกันในที่ที่ถูกต้องด้วยสตริงโค้ดได้

const code = `some code ${value} some more code`;

รหัสการคืนสินค้า

การบล็อกประเภทต่างๆ กำหนดให้แสดงสตริงโค้ดด้วยวิธีที่ต่างกัน ดังนั้นให้ลองดูแต่ละหน้าสำหรับข้อมูลเพิ่มเติม