我正在学习 Vaadin 11,我有一个问题。这有什么区别:
public class MyClass extends Div { /... }
...和这个?:
@Tag(Tag.DIV)
public class MyClass { /** }
根据文档:
div 类: 表示
<div>
元素的组件。
标记注释: 定义用于使用默认组件构造函数创建的组件的根元素的标记。
看起来他们做同样的事情:创建一个类来表示一个根元素。是这样吗?
我正在学习 Vaadin 11,我有一个问题。这有什么区别:
public class MyClass extends Div { /... }
...和这个?:
@Tag(Tag.DIV)
public class MyClass { /** }
根据文档:
div 类: 表示
<div>
元素的组件。
标记注释: 定义用于使用默认组件构造函数创建的组件的根元素的标记。
看起来他们做同样的事情:创建一个类来表示一个根元素。是这样吗?
两种方式都会<div>
在浏览器中为您提供一个元素(除了您需要添加extends Component
到@Tag(Tag.DIV)
示例中)。
不同之处在于Div
该类还专门为<div>
元素定义了一些额外的 API,而如果Component
使用@Tag(Tag.DIV)
.
不同之处在于服务器端 API。这个Div
类本身真的很简单,但它确实通过它的父类实现了一些有用的 mixin 接口,比如HasSize
和HasStyle
。这意味着您可以myClass.setHeight("500px")
在扩展Div
.
另一方面,如果您使用@Tag
注释来告诉您的MyComponent
类div
在客户端上有标签,那么除了您决定自己提供的内容之外,您不会公开任何服务器端方法。这是好事还是坏事取决于您想为班级用户提供什么样的功能。