Blok kitaplıklarını yayınlama

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

Yönergeler

  • Kullanıcıların tüm bloklarınızı yüklemesini kolaylaştırarak Kullanıcıların yalnızca belirli blokları veya blok parçalarını yüklemesi mümkün karar verebilirler.
    • Her şeyi yüklemeyi kolaylaştırın: Bunu, yükleme işlemini tek bir blok tanımının gerektirdiği her parçayı yükleyen fonksiyon (ör. mutatörler, uzantılar, mix'ler, alanlar vb.). Ayrıca, eklentiniz tarafından sunulan tüm blokları tek seferde yükleyen bir işlev de sağlayabilirsiniz.
    • Belirli parçaların seçilmesini sağlayın: Bir blok tanımının tüm parçalarını ayrı ayrı dışa aktarmanız gerekir. Böylece, kullanıcıların kendi benzer özel bloklarını oluşturmak için yalnızca ihtiyaç duydukları parçaları içe aktarması mümkün olur.
  • Eklentilerinizde yan etkiler kullanmaktan kaçının.
    • Bloklar, alanlar, uzantılar ve diğer parçalar görebilirsiniz. Kullanıcılar, hangi öğelerin ne zaman yükleneceği üzerinde kontrol sahibi olmalıdır. Bu, kullanıcıların endişe etmeden ihtiyaç duydukları parçaları yüklendi.
  • Yeni alanları doğrudan oluşturmak yerine JSON alan sicil defterini kullanın.

    • Önerilmez: Yeni bir alanı doğrudan örneklendirme:

        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 sicil defterini kullanmak, kullanıcıların blok tanımını değiştirmek zorunda kalmadan bloklarında kullanılan alanın uygulamasını değiştirmesini kolaylaştırır.

  • Kullanıcının önceden yüklediği uygulamalar hakkında varsayımlarda bulunmayın.

    • Eklentiniz özel bir alan veya başka bir eklenti gerektiriyorsa bunları kaydedin alanına girdiğiniz install işlevine gidin.
    • Blockly, yakında programa kaydolmanıza olanak tanıyan araçlar sunacak hatasız olarak kaydedilmiş öğeleri içerir. O zamana kadar ek süre kaydetmeden önce nelerin kayıtlı olduğunu kontrol edin, en iyi uygulamaları paylaşacağım.
    • Projenin gerektirdiği ön koşullar veya bağımlılıklar emin olmanız gerekir.
  • Sağladığınız her blok için üretken işlevler sağlayabilirsiniz.

    • Hazır olarak çalışan oluşturucu işlevleri sunmak, kullanıcıların yapılarını ve tasarımlarını anlamak zorunda kalmadan bloklarınızı kullanmasını kolaylaştırır. Kendi jeneratör işlevlerini yazmaları gerekirse her kullanıcının gereksiz işler yapmasına neden olabilir.
    • JavaScript, Blockly'de en yaygın olarak kullanılan dildir. Bu nedenle, yalnızca bir dil seçerseniz bloklarınız belirli bir dil için oluşturulmadığı sürece (ör. Python kitaplığı uygulama) JavaScript'i öneririz.
    • Oluşturucu işlevlerini uygulayamadığınız diller için "yardım iste" sorunları yayınlayabilir ve kullanıcılar bu sorunlara katkıda bulunursa bu sorunlarla ilgili çekme isteklerini kabul edebilirsiniz.
    • Engellemeniz için bir yükleme işlevi sağlarsanız, isteğe bağlı generators parametresidir. Bir kullanıcı, desteklediğiniz bir oluşturucu örneği gönderirse blok kodu oluşturucu işlevini otomatik olarak yükleyebilir ve ayrılmış kelime ekleme gibi ilgili işlemleri yapabilirsiniz:

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

Geri bildirim

Bu yönergelere uymak için eklentinizde neler yapabileceğiniz hakkında sorularınız varsa forumda bize bildirin. Blok kitaplıklarınızı görmek ve bunlarla ilgili geri bildirimde bulunmak isteriz.

Şu anda, engelleme tanımları sağlayan tüm birinci taraf eklentilerinin bu yönergelere uymadığını ancak yeni eklentilerin bu yönergelere uyacağını ve mevcut eklentilerin taşınacağını unutmayın.