Uzantılar ve karma bileşenler

Uzantılar, başlatma sırasında bir blokta çalıştırılan işlevlerdir. Bunlar genellikle bir bloğa özel yapılandırma veya davranış ekler. Mixin'ler, bir bloğa özellik veya yardımcı işlev eklemenize olanak tanır ancak bunları hemen çalıştırmaz.

Uzantı veya karma öğeleri yalnızca JSON ile bir blok tanımlarken kullanmanız gerekir. Bir bloğu tanımlamak için JavaScript kullanıyorsanız başlatma işlevlerini doğrudan init içinde çağırabilir ve doğrudan tanımaya yöntem veya özellikler ekleyebilirsiniz.

Uzantılar

Uzantılar, blok oluşturulurken belirli bir türdeki her blokta çalışan işlevlerdir. Örneğin, özel yapılandırma (ör. bloğun ipucunu ayarlama) veya özel davranış (ör. bloğa bir etkinlik dinleyici ekleme) ekleyebilirler.

// This extension sets the block's tooltip to be a function which displays
// the parent block's tooltip (if it exists).
Blockly.Extensions.register(
    'parent_tooltip_extension',
    function() { // this refers to the block that the extension is being run on
      var thisBlock = this;
      this.setTooltip(function() {
        var parent = thisBlock.getParent();
        return (parent && parent.getInputsInline() && parent.tooltip) ||
            Blockly.Msg['MATH_NUMBER_TOOLTIP'];
      });
    });

Uzantıların bir dize anahtarıyla ilişkilendirilebilmesi için "kaydedilmesi" gerekir. Ardından, uzantıyı bloğa uygulamak için bu dize anahtarını blok türünüzün JSON tanımının extensions mülküne atayabilirsiniz.

{
 //...,
 "extensions": ["parent_tooltip_extension",]
}

Ayrıca, tek seferde birden fazla uzantı ekleyebilirsiniz. Yalnızca bir uzantı uyguluyor olsanız bile extensions özelliğinin bir dizi olması gerektiğini unutmayın.

{
  //...,
  "extensions": ["parent_tooltip_extension", "break_warning_extension"],
}

Karışım sınıfları

Blockly, bir bloğa bazı özellikler/yardımcı işlevler eklemek ancak bunları hemen çalıştırmak istemediğiniz durumlar için de kullanışlı bir yöntem sunar. Bu, tüm ek özelliklerinizi/yöntemlerinizi içeren bir mixin nesnesi kaydetmenize olanak tanır. Karışım nesnesi daha sonra, belirli bir blok türünün örneği oluşturulduğunda karışımı uygulayan bir işleve sarmalanır.

Blockly.Extensions.registerMixin('my_mixin', {
  someProperty: 'a cool value',

  someMethod: function() {
    // Do something cool!
  }
))`

Karışımlarla ilişkili dize anahtarlarına, diğer tüm uzantılarda olduğu gibi JSON'da da referans verilebilir.

{
 //...,
 "extensions": ["my_mixin"],
}