Blok Kitaplıklarını Yayınla

Blok tanımları kitaplıkları sağlayan eklentiler, yeniden kullanılabilir bloklarınızı Blockly topluluğuyla paylaşmanın harika bir yoludur. Blok kitaplığınızı mümkün olduğunca çok yönlü ve kullanışlı hale getirmek için bu yönergeleri geliştirdik.

Yönergeler

  • Kullanıcıların tüm bloklarınızı kolayca yüklemelerini ve yalnızca belirli blokları veya blok parçalarını yüklemelerini mümkün olmasını sağlayın.
    • Her şeyi yüklemeyi kolaylaştırın: Bunu tek bir blok tanımının gerektirdiği her parçayı (mutatörler, uzantılar, mix'ler, alanlar vb.) yükleyen bir işlev sağlayarak yapabilirsiniz. Ayrıca, eklentiniz tarafından sunulan tüm blokları aynı anda yükleyecek bir işlev de sağlayabilirsiniz.
    • Belirli parçaları seçebilme olanağı: Bir blok tanımının tüm parçalarını ayrı ayrı dışa aktarmalısınız. Böylece, bir kullanıcı kendi benzer özel blokunu oluşturmak için yalnızca ihtiyaç duyduğu parçaları içe aktarabilir.
  • Eklentinizde yan etkiler kullanmaktan kaçının.
    • Eklentinizi yüklerken yan etki olarak engellemeler, alanlar, uzantılar ve diğer parçalar yüklenmemelidir. Kullanıcılar hangi öğelerin ne zaman yükleneceğini kontrol etmelidir. Bu sayede kullanıcılar, ürünleri yüklenmeyeceklerinden endişe etmeden ihtiyaç duydukları parçaları içe aktarabilirler.
  • Yeni alanları doğrudan örneklendirmek yerine JSON alan kayıt defterini kullanın.

    • Önerilmez - Doğrudan yeni bir alan örneği verme:

        const myCustomBlock = {
          init: function() {
            this.appendDummyInput()
                .appendField(new Blockly.FieldNumber(123), 'NAME');
          }
        }
      
    • Önerilen - JSON alanı kaydı:

        export const myCustomBlock = {
          init: function() {
            this.appendDummyInput()
                .appendField(Blockly.fieldRegistry.fromJson({
                    name: 'field_number',
                    value: 123,
                  }), 'NAME');
          }
        }
      
    • Alan kaydını kullanmak, kullanıcının blok tanımını değiştirmek zorunda kalmadan blokunuzda kullanılan alanın uygulamasını değiştirmesini kolaylaştırır.

  • Kullanıcının zaten yüklemiş olduğu şeyler konusunda varsayımlarda bulunmayın.

    • Eklentiniz özel bir alan veya başka bir eklenti gerektiriyorsa bu alanları sağladığınız install işlevine kendiniz kaydedin.
    • Yakında Blockly, önceden kaydedilmiş öğeleri hatasız kaydetmenizi sağlayan araçlar sağlayacak. O zamana kadar, bir uzantıyı, dönüştürmeyi, mix'i veya alanı kendiniz kaydetmeden önce nelerin önceden kaydedilmiş olduğunu kontrol etmek isteyebilirsiniz.
    • Eklentinizin gerektirdiği önkoşullar veya bağımlılıklar konusunda net olun ya da tanımları engelleyin.
  • Sağladığınız her blok için oluşturucu işlevleri sağlamayı düşünün.

    • Kullanıma hazır jeneratör işlevleri sunmak, kullanıcıların yapılarını ve tasarımlarını anlamak zorunda kalmadan bloklarınızı kullanmalarını kolaylaştırır. Kendi jeneratör işlevlerini yazmaları gerekiyorsa bu, her kullanıcı tarafından gereksiz iş yapılmasıyla sonuçlanabilir.
    • JavaScript, Blockly'de en yaygın kullanılan dildir. Bu nedenle, engellemeleriniz bir Python kitaplığının uygulanması gibi belirli bir dil için oluşturulmadığı sürece, yalnızca tek bir dil seçerseniz JavaScript'i kullanmanızı öneririz.
    • Oluşturucu işlevleri uygulayamadığınız diller için "yardım almak istiyorum" sorunlarını yayınlamayı ve bir kullanıcı katkıda bulunursa bunlar için çekme isteklerini kabul etmeyi düşünün.
    • Engellemeniz için bir yükleme işlevi sağlarsanız isteğe bağlı bir generators parametresini kabul edebilirsiniz. Bir kullanıcı desteklediğiniz bir oluşturucu örneği aktarırsa blok kodu oluşturma işlevini otomatik olarak yükleyebilir ve ayrılmış kelimeler eklemek gibi ilgili işleri yapabilirsiniz:

        // 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});
      

Geri bildirim

Eklentinizde bu yönergeleri en iyi şekilde nasıl uygulayacağınızla ilgili sorularınız varsa lütfen forumda bize iletin! Engelleme kitaplıklarınızı görmek ve bunlarla ilgili geri bildirimde bulunmak isteriz.

Blok tanımları sağlayan tüm birinci taraf eklentilerinin şu anda bu yönergelere uymadığını ancak yeni eklentilerin geçerli olacağını ve mevcut eklentileri taşımayı planlıyoruz.