2011-09-04 17 views
14

Giả sử tôi đã xác định một số thành phần mới - MyComponent1, MyComponent2, ..., mở rộng Ext.Component.mixin vs plugin. Chọn cái gì?

Bây giờ tôi muốn mở rộng tất cả tiện ích con này có cùng chức năng - Tôi muốn thêm nút close xuất hiện ở vị trí trên cùng bên phải của MyComponentX.el.

Tôi nên sử dụng gì: mixin? plugin? hoặc cái gì khác?
Và nói chung: mixin vs plugin, phương pháp hay nhất là gì?

+1

Mixin là thừa kế nhưng plugin là thành phần. –

Trả lời

17

Tôi thích nghĩ về nó như -

mixin là những gì bạn sử dụng để đạt được 'đa thừa kế'
plugin là những gì bạn sử dụng để nâng cao một thành phần hiện có. vòng đời của plugin được quản lý bởi thành phần. (không có quản lý vòng đời cho mixin. Hãy nghĩ về mixin là tương đương lớp cơ sở)

+0

Cảm ơn bạn đã trả lời. Vì vậy, bạn nghĩ đó là lựa chọn tốt nhất cho ví dụ về nút đóng của tôi? –

+3

Tôi đã hiểu. Lựa chọn tốt nhất sẽ là 'plugin' như tôi muốn' để tăng cường thành phần hiện tại'. Cảm ơn, một lần nữa. –

+0

Ngoài ra, vì OP hỏi về tổng thể, bạn chỉ có thể sử dụng các plugin trên 'Ext.Component's –

14

Thuộc tính và hàm Mixin được đưa trực tiếp vào lớp để chúng là một phần của định nghĩa lớp.

plugin được bổ sung ở mức dụ

1

Plugins sẽ thêm chức năng cho lớp Ext.Component hoặc lớp mở rộng Ext.Component. Phạm vi của bất kỳ phương pháp nào trong plugin đều nằm trong plugin.

Mixins có thể được sử dụng để thêm chức năng cho bất kỳ lớp nào khác. các phương thức kết hợp sẽ có sẵn trực tiếp vào lớp học.