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

ปลั๊กอินที่มีไลบรารีคำจำกัดความของบล็อกเป็นวิธีที่ยอดเยี่ยมในการแชร์บล็อกที่ใช้ซ้ำได้กับชุมชน 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 จะมีเครื่องมือที่ช่วยให้คุณลงทะเบียนรายการที่ลงทะเบียนไว้แล้วได้โดยไม่มีข้อผิดพลาด ในระหว่างนี้ คุณอาจต้องตรวจสอบสิ่งที่ลงทะเบียนไว้แล้วก่อนที่จะลงทะเบียนส่วนขยาย ตัวแปร Mixin หรือฟิลด์ด้วยตนเอง
    • มีความชัดเจนเกี่ยวกับข้อกำหนดเบื้องต้นหรือทรัพยากร Dependency ที่ปลั๊กอินหรือการกำหนดบล็อกต้องใช้
  • ลองระบุฟังก์ชันการสร้างสําหรับแต่ละบล็อกที่คุณระบุ

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

        // Your plugin's install function
        export const installMyCustomBlock(generators = {}) {
          Blockly.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});
      

ความคิดเห็น

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

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