Vaadin 10适用于新项目

12

我是一名Java开发人员,打算开始新的项目。我在客户端开发方面的技能很有限,这就是为什么我非常喜欢Vaadin框架的原因。我已经评估了Vaadin 10 Bakery App Starter应用程序(https://vaadin.com/start#vaadin10),对于用于构建此应用程序的自定义HTML/CSS/JavaScript代码量感到非常惊讶。目前我非常困惑,不理解它如何简化我的开发人员生活。

目前我唯一可以作为我的项目启动器的应用程序是著名的QuickTickets Dashboard(https://demo.vaadin.com/dashboard/),该应用程序完全使用Java实现所有UI。目前最大的问题是,该应用程序是基于Vaadin 8实现的,我无法找到其Vaadin 10版本。你是否有类似Vaadin 10的东西?如果没有,你是否有从Vaadin 8迁移到Vaadin 10的迁移指南,以便我尝试将此应用程序移植到Vaadin 10中?


V10尚未发布。 - André Schild
是的,我知道。这在开发者预览版中可用。 - alexanoid
2
如果您现在想要完成真正的工作,请使用当前版本的Vaadin 8。Vaadin 8是建立在多年经验基础上的成熟代码库。Vaadin 8有着长期的生命周期。相比之下,Vaadin 10是实验性的尖端下一代技术,涉及新概念、新技术和新代码。Vaadin 10还没有准备好用于生产。 - Basil Bourque
嗨@alexanoid,你在Vaadin 10中找到了什么可以帮助我创建一个应用程序或者类似这样的模板吗?https://demo.vaadin.com/dashboard/ 如果你能给我建议,那将不胜感激。 - KuldeeP ChoudharY
更新:Vaadin有限公司在2018年7月发布了Matti Tahvonen的博客文章,对使用Vaadin 8(框架)与Vaadin 10/11(Flow)进行开发的利弊进行了冷静分析。 - Basil Bourque
5个回答

12

试试Vaadin 10吧!

是的,我们目前还没有为Java-only UI提供入门级别的支持。但这并不意味着不能通过Vaadin 10实现。Javier已经给出了一个很好的例子。我们一直在开发新的入门级别教程,并且将来也会允许第三方提供入门级别的教程。

关于迁移,请参考https://vaadin.com/docs/v10/flow/migration/1-migrating-v8-v10.html,它应该能够给您一个很好的概述。

此外,Vaadin 10已经达到了beta阶段,我们计划在今年发布正式版。

如果您之前没有接触过Vaadin,我建议您使用Vaadin 10,并且不要开始学习“旧版”Vaadin(即使它将被支持多年)。


2
嗨@Paul,对于Vaadin 10,我想要与下面链接中提到的相同的仪表板或模板。demo.vaadin.com/dashboard 如果您能够提供或建议给我,那将不胜感激。 - KuldeeP ChoudharY
嗨,KuldeeP ChoudharY, 很遗憾,Vaadin 10 没有类似的展示案例可用,而且据我所知也没有计划,因为我们完全集中于启动器。 - Paul Roemer

7

使用Vaadin 8

我已经使用Vaadin几年了,我建议您坚持使用Vaadin 8。

Vaadin 10正在进行根本性的改变(用WebComponents替换GWT),但是我强烈建议您在开始新项目时使用Vaadin 8。特别是如果你也是刚开始使用Vaadin。

Vaadin 10是一个开发者预览版本。在这一过程中将会有很多变化。而且知识库(文档、StackOverflow、论坛等)非常非常小。我也没有看到稳定版本在2018年发布。我的猜测是,在夏季2019年之前,它能够足够稳定地取代Vaadin 8。

阅读公司路线图上关于Vaadin 8的长期计划。计划包括连续几年的正式季度发布节奏。

2018年3月更新:Vaadin 10(现在称为Vaadin Flow已经进入beta测试。而公司宣布了一个新的发布节奏计划,包括季度发布和长期支持(LTS)版本。也许稳定版本会比我预期的要早。但我仍然建议在新项目中使用Vaadin Framework 8

考虑Vaadin 14

2019年8月更新:Vaadin 14,当前的LTS版本,现已发布。

如果您的用户将使用近期版本的现代“不断更新”的web浏览器,并且要开始一个新项目,如果您需要的组件可用,那么我推荐尝试使用14。请注意,在启动新的Vaadin 14项目时,我遇到并解决了这个障碍


谢谢!我会遵循这个建议,坚持使用Vaadin 8。 - alexanoid
3
更新:自2018年3月起,Vaadin有限公司开始推广Vaadin 10,现在称为Vaadin Flow(v10),与Vaadin Framework(v8、7、6)区分开来。网站默认显示Flow信息和文档。请参阅2018-03-08博客文章,了解关于Flow的定期季度发布节奏以及穿插的LTS(长期支持)计划。尽管如此,我同意这个答案建议你如果想要完成实际工作,今年(2018)应该用Vaadin 8。Flow仍处于测试版,功能没有Vaadin Framework 8那么完善,也不那么稳定。 - Basil Bourque
@ssindelar,是否已知他们为什么跳过了版本9?这与Java 9有关吗? - zygimantus
@DuracellDeMonaco 我现在正在使用 Vaadin 14 开始一个新项目,这是最新的LTS版本。是的,有些文档的部分比较单薄,例如一些布局缺乏任何解释性的讨论。所以如果要开始一个新项目,并且你需要的组件可用,那么我建议尝试使用14。注意这个障碍 我遇到的问题,并通过一个新项目解决了。 - Basil Bourque
@DuracellDeMonaco,我也对Vaadin在其更高级的入门示例中使用大量自定义HTML、CSS和JavaScript感到失望。我认为这会误导人们对Vaadin的能力和主流用途的理解,因此作为一种营销工具是适得其反的。因此,我建议您浏览这些示例中的代码。但是对于真正的工作,请使用“纯Java Servlet”选项上的基本入门示例,该选项位于开始使用Vaadin页面上。并按照上面提到的速度障碍链接中讨论的方式添加npm/Node.js工具。 - Basil Bourque
显示剩余2条评论

7

虽然Vaadin 10 Bakery App Starter很好地展示了框架的新功能,但它严重依赖于PolymerTemplate,如果您正在寻找更类似于Vaadin 8的代码,那么它可能不是最佳示例。

实际上,仅使用Java编写UI与以前的版本一样简单。例如,在Vaadin Flow Tutorial中描述的MainView类(下面摘录)包含一个网格(Grid),不需要编写HTML或JS。

如果您采用这种方法,可以将应用程序基于Skeleton Starter App,并将ExampleTemplate(聚合体)替换为在Java代码中定义的自己的布局。

@HtmlImport("styles/shared-styles.html")
@Route("")
@Theme(Lumo.class)
@BodySize(height = "100vh", width = "100vw")
public class MainView extends VerticalLayout {
    private CustomerService service = CustomerService.getInstance();
    private Grid<Customer> grid = new Grid<>();

    public MainView() {
       grid.setSizeFull();

       grid.addColumn(Customer::getFirstName).setHeader("First name");
       grid.addColumn(Customer::getLastName).setHeader("Last name");
       grid.addColumn(Customer::getStatus).setHeader("Status");

       add(grid);

       updateList();
   }

   //etc...
}

你是否知道一个类似的例子(仅限Java,没有HTML模板),其中包含输入处理? - Rhangaun
不,但你看过https://vaadin.com/docs/v10/flow/binding-data/tutorial-flow-components-binder.html吗? - Javier
看过了,但是就我所知,这个与“简单UI应用”或“项目基础”中基于模板的示例之间的区别从未被明确说明(即PolymerTemplate + Model接口与Binder之间的区别)。 - Rhangaun

3

0

如果您可以接受使用 Kotlin 而不是 Java,您可以尝试 https://github.com/mvysny/vaadin-kotlin-pwa。该应用程序的目标是完全不使用 Polymer 模板,并在服务器端进行所有操作,就像我们在 Vaadin 8 中所做的一样。所有内容都应在 Github 的自述文件中得到解释 - 如果没有,请告诉我并打开一个错误报告。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接