Blockbibliotheken veröffentlichen

Mit Plug-ins, die Bibliotheken mit Blockdefinitionen bereitstellen, lassen sich wiederverwendbaren Blöcken mit der Blockly-Community. Um die Blockbibliothek als Diese Richtlinien haben wir für Sie zusammengestellt.

Richtlinien

  • Machen Sie es den Nutzern einfach, alle Ihre Blöcke zu installieren Möglich, dass Nutzer nur bestimmte Blöcke oder bestimmte Blöcke installieren können. die sie wählen.
    • Erleichtern Sie die Installation: Dazu können Sie eine Funktion bereitstellen, die alle Teile installiert, die für eine einzelne Blockdefinition erforderlich sind (z. B. Mutatatoren, Erweiterungen, Mixins, Felder usw.). Sie können auch eine Funktion bereitstellen, mit der alle Blöcke, die von Ihrem Plug-in angeboten werden, gleichzeitig installiert werden.
    • Es muss möglich sein, bestimmte Teile auszuwählen: Sie sollten alle Teile einer Blockdefinition separat exportieren, damit Nutzer nur die Teile importieren können, die sie benötigen, um einen eigenen ähnlichen benutzerdefinierten Block zu erstellen.
  • Verwenden Sie in Ihrem Plug-in keine Nebeneffekte.
    • Blöcke, Felder, Erweiterungen und andere Elemente sollten nicht als das Laden des Plug-ins ein. Nutzer sollten die Kontrolle darüber behalten, was und wann installiert wird. So können Nutzer die benötigten Teile importieren, ohne sich Gedanken darüber machen zu müssen, dass nicht benötigte Teile installiert werden.
  • Verwenden Sie die JSON-Feld-Registry, anstatt neue Felder direkt zu instanziieren.

    • Nicht empfohlen: Direktes Instanziieren eines neuen Felds:

        const myCustomBlock = {
          init: function() {
            this.appendDummyInput()
                .appendField(new Blockly.FieldNumber(123), 'NAME');
          }
        }
      
    • Empfohlen – JSON-Feldregistrierung:

        export const myCustomBlock = {
          init: function() {
            this.appendDummyInput()
                .appendField(Blockly.fieldRegistry.fromJson({
                    name: 'field_number',
                    value: 123,
                  }), 'NAME');
          }
        }
      
    • Mithilfe der Field Registry können Nutzer die Implementierung des in Ihrem Block verwendeten Felds, ohne Änderungen der Blockdefinition.

  • Gehen Sie nicht davon aus, was der Nutzer bereits installiert hat.

    • Wenn für Ihr Plug-in ein benutzerdefiniertes Feld oder ein anderes Plug-in erforderlich ist, registrieren Sie diese Felder selbst in der von Ihnen bereitgestellten install-Funktion.
    • Bald bietet Blockly Tools an, mit denen Sie sich registrieren können. bereits registrierten Artikeln ohne Fehler. Bis dahin können Sie prüfen, was bereits registriert wurde, bevor Sie eine Erweiterung, einen Mutator, einen Mixin oder ein Feld selbst registrieren.
    • Seien Sie sich über alle Voraussetzungen oder Abhängigkeiten, die für Ihre Plug-in- oder Blockdefinitionen.
  • Sie sollten für jeden Block, den Sie bereitstellen, Generatorfunktionen angeben.

    • Wenn Sie Generatorfunktionen bereitstellen, die sofort einsatzbereit sind, können Nutzer Ihre Blöcke leichter verwenden, ohne ihre Struktur und ihr Design verstehen zu müssen. Wenn sie ihre eigenen Generatorfunktionen schreiben müssen, kann dies zu redundanter Arbeit für jeden Nutzer führen.
    • JavaScript ist die am häufigsten verwendete Sprache in Blockly. Wenn Sie nur eine Sprache auswählen, empfehlen wir JavaScript, es sei denn, Ihre Blöcke sind für eine bestimmte Sprache entwickelt, z. B. für die Implementierung einer Python-Bibliothek.
    • Du könntest auch „Hilfe gewünscht“ posten für die Sprachen, für die Sie keine Generatorfunktionen implementieren und Pull-Anfragen für wenn ein Nutzer sie beisteuert.
    • Wenn Sie eine Installationsfunktion für Ihren Block angeben, können Sie einen optionalen Parameter generators akzeptieren. Wenn ein Nutzer eine von Ihnen unterstützte Generatorinstanz übergibt, können Sie die Block-Code-Generatorfunktion automatisch installieren und damit verbundene Aufgaben ausführen, z. B. reservierte Wörter hinzufügen:

        // 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

Wenn Sie Fragen zur Einhaltung dieser Richtlinien in Ihrem Plug-in haben, lasst es uns bitte im Forum wissen. Wir würden uns sehr über Ihre Blockbibliotheken freuen und Ihnen Feedback dazu geben.

Nicht alle eigenen Plug-ins, die Blockdefinitionen bereitstellen, Richtlinien einhalten. Neue Plug-ins werden jedoch bereits aktualisiert und wir planen, vorhandene Plug-ins zu migrieren. Plug-ins.