發布區塊程式庫

提供區塊定義程式庫的外掛程式是分享資訊的好方法 封鎖所有可重複使用的方塊如要將封鎖程式庫設為 我們制定了這些規範,

指南規範

  • 讓使用者輕鬆安裝所有區塊,並讓使用者自行決定只安裝特定區塊或區塊片段。
    • 讓使用者輕鬆安裝所有內容:只要提供 因此,如要安裝每個片段定義 (例如變動器、擴充功能、混合項目和欄位等)。你也可以 所提供的函式,可以安裝 外掛程式
    • 請讓您選擇特定部分:您應該匯出所有 分為不同的區塊定義 讓使用者自行匯入所需資訊 類似自訂區塊
  • 避免在外掛程式中使用連帶效果。
    • 模塊、欄位、擴充功能和其他部分不應安裝為 載入外掛程式的副作用使用者應保有掌控權 像是安裝內容和安裝時間如此一來,使用者就能 不必擔心分段安裝 已安裝。
  • 請使用 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 將提供工具 已註冊的商品無錯誤。在此之前,建議您先查看已註冊的項目,再自行註冊擴充功能、變換器、混合器或欄位。
    • 明確指出外掛程式或區塊定義所需的任何必要條件或依附元件。
  • 建議您為每個提供的區塊提供產生器函式。

    • 提供可立即使用的產生器函式,可讓使用者輕鬆使用方塊,而無須瞭解方塊的結構和設計。如果他們必須自行編寫產生器 函式,可能會導致每位使用者執行多餘的工作。
    • JavaScript 是 Blockly 中最常使用的語言,因此如果您只提供一種語言,建議使用 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});
      

意見回饋

如果不清楚如何在外掛程式中遵守這些規範, 請透過論壇通知我們!我們非常期待能看到你的封鎖程式庫 提供看法

請注意,目前並非所有提供封鎖定義的第一方外掛程式 但會要求新的外掛程式 外掛程式