Ekstensi adalah fungsi yang dijalankan pada blok selama inisialisasi. Hal ini sering kali menambahkan beberapa konfigurasi atau perilaku kustom ke blok. Mixin memungkinkan Anda menambahkan properti atau fungsi bantuan ke blok, tetapi tidak langsung menjalankannya.
Anda hanya perlu menggunakan ekstensi atau mixin saat menentukan blok dengan JSON. Jika menggunakan JavaScript untuk menentukan blok, Anda dapat memanggil fungsi inisialisasi langsung di init
dan menambahkan metode atau properti langsung ke definisi.
Ekstensi
Ekstensi adalah fungsi yang berjalan di setiap blok dari jenis tertentu saat blok dibuat. Misalnya, mereka dapat menambahkan konfigurasi kustom (misalnya menetapkan tooltip blok) atau perilaku kustom (misalnya menambahkan pemroses peristiwa ke blok).
// 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'];
});
});
Ekstensi harus "terdaftar" agar dapat dikaitkan dengan kunci string. Kemudian, Anda dapat menetapkan kunci string ini ke properti extensions
dari
definisi JSON jenis blok untuk menerapkan
ekstensi ke blok.
{
//...,
"extensions": ["parent_tooltip_extension",]
}
Anda juga dapat menambahkan beberapa ekstensi sekaligus. Perhatikan bahwa properti extensions
harus berupa array, meskipun Anda hanya menerapkan satu ekstensi.
{
//...,
"extensions": ["parent_tooltip_extension", "break_warning_extension"],
}
Mixin
Blockly juga menyediakan metode praktis untuk situasi saat Anda ingin menambahkan beberapa properti/fungsi bantuan ke blok, tetapi tidak langsung menjalankannya. Hal ini berfungsi dengan memungkinkan Anda mendaftarkan objek mixin yang berisi semua properti/metode tambahan. Objek mixin kemudian digabungkan dalam fungsi yang menerapkan mixin setiap kali instance jenis blok tertentu dibuat.
Blockly.Extensions.registerMixin('my_mixin', {
someProperty: 'a cool value',
someMethod: function() {
// Do something cool!
}
))`
Kunci string yang terkait dengan mixin dapat direferensikan dalam JSON seperti ekstensi lainnya.
{
//...,
"extensions": ["my_mixin"],
}