I plug-in che forniscono librerie di definizioni dei blocchi sono un ottimo modo per condividere i blocchi riutilizzabili con la community di Blockly. Per rendere la tua raccolta di blocchi il più versatile e utile possibile, abbiamo sviluppato queste linee guida.
Linee guida
- Rendi facile per gli utenti installare tutti i tuoi blocchi e possibile per loro installare solo determinati blocchi o parti di blocchi.
- Semplifica l'installazione di tutto: puoi farlo fornendo un funzione che installa ogni elemento richiesto da una singola definizione di blocco (come mutatori, estensioni, mix, campi e così via). Puoi anche forniscono una funzione che installerà tutti i blocchi offerti dal contemporaneamente.
- Consentite di scegliere parti specifiche: dovete esportare tutti i la definizione di un blocco separatamente, in modo che sia possibile di importare solo i pezzi di cui ha bisogno per creare il proprio un blocco personalizzato simile.
- Evita di utilizzare effetti collaterali nel plug-in.
- Blocchi, campi, estensioni e altri componenti non devono essere installati come effetto collaterale del caricamento del plug-in. Gli utenti devono mantenere il controllo quali elementi sono installati e quando. Ciò consente agli utenti di importare pezzi di cui hanno bisogno senza preoccuparsi di altri pezzi installato.
Utilizza il registry dei campi JSON anziché creare direttamente nuovi campi.
Opzione non consigliata. Creare direttamente un'istanza per un nuovo campo:
const myCustomBlock = { init: function() { this.appendDummyInput() .appendField(new Blockly.FieldNumber(123), 'NAME'); } }
Consigliato: registry dei campi JSON:
export const myCustomBlock = { init: function() { this.appendDummyInput() .appendField(Blockly.fieldRegistry.fromJson({ name: 'field_number', value: 123, }), 'NAME'); } }
L'utilizzo del registry dei campi consente a un utente di sostituire più facilmente l'implementazione del campo utilizzato nel blocco senza dover modificare la definizione del blocco.
Non fare ipotesi su ciò che l'utente ha già installato.
- Se il tuo plug-in richiede un campo personalizzato o un altro plug-in, registra autonomamente questi campi nella funzione
install
fornita. - A breve, Blockly fornirà strumenti che ti consentono di registrarti articoli già registrati senza errori. Fino ad allora, potresti voler controlla cosa è già stato registrato prima di registrare un'estensione, un mutatore, un mix o una possibilità.
- Descrivi chiaramente tutti i prerequisiti o le dipendenze richiesti le definizioni dei plug-in o dei blocchi.
- Se il tuo plug-in richiede un campo personalizzato o un altro plug-in, registra autonomamente questi campi nella funzione
Valuta la possibilità di fornire funzioni di generazione per ciascuno dei blocchi che fornisci.
- Fornire funzioni di generatore che funzionano immediatamente semplifica per gli utenti l'utilizzo dei blocchi senza dover comprendere la loro struttura e il loro design. Se devono scrivere il proprio generatore funzioni, questo può portare a un lavoro ridondante da parte di ciascun utente.
- JavaScript è il linguaggio più usato in Blockly, quindi se solo scegliere una lingua da fornire, consigliamo JavaScript, a meno che i blocchi sono create per un linguaggio specifico, come l'implementazione di una libreria Python.
- Valuta la possibilità di pubblicare problemi "help wanted" per le lingue per le quali non riesci a implementare le funzioni di generatore e accetta le richieste pull per queste lingue se un utente le fornisce.
Se fornisci una funzione di installazione per il blocco, puoi accettare un parametro
generators
facoltativo. Se un utente passa a un'istanza del generatore supportati, puoi installare automaticamente il generatore di codici a blocchi e svolgere le attività correlate, come l'aggiunta di parole riservate:// 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});
Feedback
Se hai domande su come seguire al meglio queste linee guida nel tuo plug-in, non esitare a contattarci nel forum. Ci piacerebbe vedere le tue raccolte di blocchi e fornirti un feedback.
Tieni presente che, al momento, non tutti i plug-in proprietari che forniscono definizioni di blocchi seguire queste linee guida, ma i nuovi plug-in seguiranno e prevediamo di migrare quelli esistenti o plug-in.