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