Tiện ích là các hàm chạy trên một khối trong quá trình khởi chạy. Các thuộc tính này thường thêm một số cấu hình hoặc hành vi tuỳ chỉnh vào một khối. Mixin cho phép bạn thêm các thuộc tính hoặc hàm trợ giúp vào một khối, nhưng không chạy các thuộc tính hoặc hàm trợ giúp đó ngay lập tức.
Bạn chỉ cần sử dụng tiện ích hoặc mixin khi xác định một khối bằng JSON. Nếu sử dụng JavaScript để xác định một khối, bạn có thể gọi các hàm khởi chạy trực tiếp trong init
và thêm các phương thức hoặc thuộc tính trực tiếp vào định nghĩa.
Phần mở rộng
Tiện ích là các hàm chạy trên mỗi khối của một loại nhất định khi khối được tạo. Ví dụ: các thành phần này có thể thêm cấu hình tuỳ chỉnh (ví dụ: thiết lập chú giải công cụ của khối) hoặc hành vi tuỳ chỉnh (ví dụ: thêm trình nghe sự kiện vào khối).
// 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'];
});
});
Bạn phải "đăng ký" các tiện ích để có thể liên kết chúng với một khoá chuỗi. Sau đó, bạn có thể gán khoá chuỗi này cho thuộc tính extensions
của định nghĩa JSON của loại khối để áp dụng phần mở rộng cho khối.
{
//...,
"extensions": ["parent_tooltip_extension",]
}
Bạn cũng có thể thêm nhiều tiện ích cùng một lúc. Xin lưu ý rằng thuộc tính extensions
phải là một mảng, ngay cả khi bạn chỉ áp dụng một tiện ích.
{
//...,
"extensions": ["parent_tooltip_extension", "break_warning_extension"],
}
Mixin
Blockly cũng cung cấp một phương thức thuận tiện cho các trường hợp bạn muốn thêm một số thuộc tính/hàm trợ giúp vào một khối, nhưng không chạy các thuộc tính/hàm đó ngay lập tức. Cách này hoạt động bằng cách cho phép bạn đăng ký một đối tượng mixin chứa tất cả các thuộc tính/phương thức bổ sung. Sau đó, đối tượng mixin được gói trong một hàm áp dụng mixin mỗi khi tạo một thực thể của loại khối đã cho.
Blockly.Extensions.registerMixin('my_mixin', {
someProperty: 'a cool value',
someMethod: function() {
// Do something cool!
}
))`
Bạn có thể tham chiếu các khoá chuỗi liên kết với mixin trong JSON giống như mọi phần mở rộng khác.
{
//...,
"extensions": ["my_mixin"],
}