ปลั๊กอินที่มีไลบรารีคำจำกัดความของบล็อกเป็นวิธีที่ยอดเยี่ยมในการแชร์ บล็อกที่นำกลับมาใช้ใหม่ได้กับชุมชน 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});
ความคิดเห็น
หากมีข้อสงสัยเกี่ยวกับวิธีปฏิบัติตามหลักเกณฑ์เหล่านี้ในปลั๊กอินของคุณอย่างดีที่สุด โปรดแจ้งให้เราทราบในฟอรัม เราอยากดูคลังบล็อกของคุณและแสดงความคิดเห็น
โปรดทราบว่าขณะนี้ปลั๊กอินของบุคคลที่หนึ่งที่ให้คำจำกัดความของบล็อกไม่ได้เป็นไปตามหลักเกณฑ์เหล่านี้ทั้งหมด แต่ปลั๊กอินใหม่จะเป็นไปตามหลักเกณฑ์ดังกล่าวและเราวางแผนที่จะย้ายข้อมูลปลั๊กอินที่มีอยู่