เผยแพร่ไลบรารีบล็อก

ปลั๊กอินที่มีไลบรารีคำจำกัดความของบล็อกเป็นวิธีที่ยอดเยี่ยมในการแชร์ บล็อกที่นำกลับมาใช้ใหม่ได้กับชุมชน Blockly หากต้องการกำหนดไลบรารีการบล็อกเป็น มีประโยชน์และยืดหยุ่นมากที่สุด เราจึงได้พัฒนาหลักเกณฑ์เหล่านี้ขึ้นมา

หลักเกณฑ์

  • ช่วยให้ผู้ใช้ติดตั้งบล็อกทั้งหมดง่าย ได้สำหรับผู้ใช้ในการติดตั้งบล็อกหรือชิ้นส่วนบางชิ้นเท่านั้น ที่เด็กๆ เลือก
    • ติดตั้งทุกอย่างได้ง่าย: คุณทําได้โดยระบุฟังก์ชันที่จะติดตั้งทุกชิ้นส่วนที่การกําหนดบล็อกรายการเดียวจําเป็นต้องใช้ (เช่น ตัวแปรที่เปลี่ยนค่า ส่วนขยาย มิกซ์อิน ฟิลด์ ฯลฯ) นอกจากนี้ คุณยังระบุฟังก์ชันที่จะติดตั้งบล็อกทั้งหมดที่ปลั๊กอินนำเสนอพร้อมกันได้ด้วย
    • เลือกเฉพาะส่วนที่ต้องการ: คุณควรส่งออกชิ้นส่วนทั้งหมดของคําจํากัดความของบล็อกแยกกันเพื่อให้ผู้ใช้นําเข้าเฉพาะชิ้นส่วนที่ต้องการเพื่อสร้างบล็อกที่กําหนดเองที่คล้ายกัน
  • หลีกเลี่ยงการใช้ผลข้างเคียงในปลั๊กอิน
    • ไม่ควรติดตั้งบล็อก ช่อง ส่วนขยาย และชิ้นส่วนอื่นๆ เป็นผลข้างเคียงของการโหลดปลั๊กอิน ผู้ใช้ควรมีสิทธิ์ควบคุมว่าจะติดตั้งอะไรและเมื่อใด ซึ่งช่วยให้ผู้ใช้นำเข้า ชิ้นที่ต้องการโดยไม่ต้องกังวลว่า ชิ้นนั้นๆ จะไม่มี ติดตั้งไว้แล้ว
  • ใช้รีจิสทรีช่อง JSON แทนการสร้างอินสแตนซ์ของช่องใหม่โดยตรง

    • ไม่แนะนํา - การสร้างอินสแตนซ์ของช่องใหม่โดยตรง

        const myCustomBlock = {
          init: function() {
            this.appendDummyInput()
                .appendField(new Blockly.FieldNumber(123), 'NAME');
          }
        }
      
    • แนะนำ - รีจิสทรีฟิลด์ JSON

        export const myCustomBlock = {
          init: function() {
            this.appendDummyInput()
                .appendField(Blockly.fieldRegistry.fromJson({
                    name: 'field_number',
                    value: 123,
                  }), 'NAME');
          }
        }
      
    • การใช้รีจิสทรีฟิลด์ช่วยให้ผู้ใช้แทนที่ การนำฟิลด์ที่ใช้ในการบล็อกมาใช้ได้โดยไม่ต้องเปลี่ยนแปลง คำจำกัดความของการบล็อก

  • อย่าคาดเดาสิ่งที่ผู้ใช้ติดตั้งไว้แล้ว

    • หากปลั๊กอินต้องใช้ฟิลด์ที่กำหนดเองหรือปลั๊กอินอื่น ให้ลงทะเบียนฟิลด์เหล่านั้นด้วยตนเองในฟังก์ชัน install ที่คุณระบุ
    • ในเร็วๆ นี้ Blockly จะมีเครื่องมือที่ช่วยให้คุณลงทะเบียนรายการที่ลงทะเบียนไว้แล้วได้โดยไม่มีข้อผิดพลาด ในระหว่างนี้ คุณอาจต้องการ ตรวจสอบข้อมูลที่ลงทะเบียนไว้ก่อนลงทะเบียนส่วนขยาย Mutator, Mixin หรืออนาคตด้วยตัวเอง
    • มีความชัดเจนเกี่ยวกับข้อกำหนดเบื้องต้นหรือทรัพยากร Dependency ที่จำเป็นตาม ข้อกำหนดปลั๊กอินหรือการบล็อก
  • ลองระบุฟังก์ชันการสร้างสําหรับแต่ละบล็อกที่คุณระบุ

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

        // Your plugin's install function
        export const installMyCustomBlock(generators = {}) {
          Blockly.common.defineBlocks({my_custom_block: myCustomBlock});
          if (generators.javascript) {
            generators.javascript.forBlock['my_custom_block'] = myCustomGeneratorFunction;
            generators.javascript.addReservedWords('specialReservedWord');
          }
        }
      
        // How a user may install your block
        import {javascriptGenerator} from 'blockly/javascript';
        import {installMyCustomBlock} from 'blockly-cool-blocks-plugin';
        // installs the block definition and the javascript block-code generator
        installMyCustomBlock({javascript: javascriptGenerator});
      

ความคิดเห็น

หากมีข้อสงสัยเกี่ยวกับวิธีปฏิบัติตามหลักเกณฑ์เหล่านี้ในปลั๊กอินของคุณอย่างดีที่สุด โปรดแจ้งให้เราทราบในฟอรัม เราอยากดูคลังบล็อกของคุณและแสดงความคิดเห็น

โปรดทราบว่าขณะนี้ปลั๊กอินของบุคคลที่หนึ่งที่ให้คำจำกัดความของบล็อกไม่ได้เป็นไปตามหลักเกณฑ์เหล่านี้ทั้งหมด แต่ปลั๊กอินใหม่จะเป็นไปตามหลักเกณฑ์ดังกล่าวและเราวางแผนที่จะย้ายข้อมูลปลั๊กอินที่มีอยู่