Vaadin 使用@Tag(Tag.DIV)注释和从DIV类扩展之间的区别

Vaadin 使用@Tag(Tag.DIV)注释和从DIV类扩展之间的区别,vaadin,vaadin10,vaadin-flow,Vaadin,Vaadin10,Vaadin Flow,我正在学习瓦丁11,我有个问题。这两者之间的区别是什么: public class MyClass extends Div { /... } …还有这个 @Tag(Tag.DIV) public class MyClass { /** } 根据文件: Div类: 表示元素的组件 标记注释: 定义用于使用默认组件构造函数创建的组件的根元素的标记 看起来他们做了同样的事情:创建一个类来表示根元素。是这样吗?两种方法都会在浏览器中为您提供一个元素(除了您需要将扩展组件添加到@Tag(Tag.

我正在学习瓦丁11,我有个问题。这两者之间的区别是什么:

public class MyClass extends Div { /... }
…还有这个

@Tag(Tag.DIV)
public class MyClass { /** }
根据文件:

Div类: 表示
元素的组件

标记注释: 定义用于使用默认组件构造函数创建的组件的根元素的标记


看起来他们做了同样的事情:创建一个类来表示根元素。是这样吗?

两种方法都会在浏览器中为您提供一个
元素(除了您需要将
扩展组件
添加到
@Tag(Tag.DIV)
示例中)


区别在于
Div
类还专门为
元素定义了一些额外的API,而如果使用
@Tag(Tag.Div)

创建一个通用
组件
子类,则可以完全控制组件的公共API。区别在于服务器端API。
Div
类本身非常简单,但它确实通过其父类实现了一些有用的mixin接口,如
HasSize
hastyle
。这意味着您可以调用
myClass.setHeight(“500px”)
来扩展
Div

另一方面,如果您使用
@Tag
注释告诉您的
MyComponent
类在客户端上有
div
标记,那么除了您决定提供的以外,您不会公开任何服务器端方法。这是好事还是坏事取决于您希望向类的用户提供什么类型的特性