您现在的位置:首页 >> 装修知识

概要Java全栈Web开发框架Hilla

发布时间:2025/08/04 12:17    来源:颍上家居装修网

icon: 'la la-globe',

title: 'Hello World',

},

{

path: 'about',

component: 'about-view',

icon: 'la la-file',

title: 'About',

action: async (_context, _command) => {

await import('./views/about/about-view');

return;

},

},

];

export const routes: ViewRoute[] = [

{

path: '',

component: 'main-layout',

children: [...views],

},

];

数据库 2 里面的代码将偏移与接口相关联。与许多 JavaScript 组件一样,Hilla 应用于接口来指出示意三幅。在这种情形,当Gmail改投到纸面两条路线时,它将给予hello-world-view接口。(除此以外,其他两条路线给予额外的信息,如三幅标、书名和操作。)

收纳布局由 /frontend/views/main-layout.ts 处理过程,而 hello-world-view 的素材在 /frontend/views/helloworld/hello-world-view.ts 里面,如数据库 3 右三幅。

数据库 3. hello-world-view.ts

克隆

import '@vaadin/button';

import '@vaadin/notification';

import { Notification } from '@vaadin/notification';

import '@vaadin/text-field';

import { html } from 'lit';

import { customElement } from 'lit/decorators.js';

import { View } from '../../views/view';

@customElement('hello-world-view')

export class HelloWorldView extends View {

name = '';

connectedCallback() {

super.connectedCallback();

this.classList.add('flex', 'p-m', 'gap-m', 'items-end');

}

render() {

return html----

Say hello

----;

}

nameChanged(e: CustomEvent) {

this.name = e.detail.value;

}

sayHello() {

Notification.show(----Hel

数据库 3 里面的代码显示了 Lit 借助于示意三幅。如果你熟识声势浩大结构设计设计 JavaScript 习惯用法,那么;也确实很清楚。如果并未,详见我从未有对 Lit 的讲解。该render()步骤专责输入示意三幅的素材。我们将在这里用它侦查某个事物。特别是,我们想进去如何将这个后侧与我们的后侧 Java 侧点连接起来。

创建者 Java 侧点

Hilla 借助于在 Spring Boot 之上,因此我们可以像往常一样应用于 Spring Web借助于侧点。Hilla 给予了额外的功能来相应转换成将在 Lit 后侧应用于的 TypeScript。

/src/java/main/com/example/application首先在被初始化的文档里面创建者一个新近文档MyEndpoint.java。将数据库 4 的素材水印到该文档里面。

数据库 4. MyEndpoint.java

克隆

package com.example.application;

import com.vaadin.flow.server.auth.AnonymousAllowed;

import dev.hilla.Endpoint;

import dev.hilla.Nonnull;

@Endpoint

@AnonymousAllowed

Public @Nonnull class MyEndpoint {

public String foo() {

return "bar";

}

}

Hilla 的 @Endpoint记事告诉组件这个类是一个 REST API。该类也应用于记事开展@AnonymousAllowed记事,因为默认情形,Hilla 通过 Spring 相容性保护所有侧点。@Nonnull记事为后侧 TypeScript 转换成适当的类型初始化。

保留这个类文档后,你可以观察到 Hilla 从未在 /frontend/generated/MyEndpoint.ts 里面转换成了一个新近的 TypeScript 文档。我们将应用于这个模块从示意三幅里面点击侧点。

注意:不让对这些转换成的文档开展变更;Hilla 将根据对 Java 文档的变更其余均它们。

如今,离开到 frontend/views/helloworld/hello-world-view.ts,我们将在这里应用于我们的最简单侧点。在这种情形,我们想要输入需要初始化 foo() 侧点(即“bar”)的素材。数据库 5 显示了你确实对 hello-world-view.ts 文档开展的掺入。 (除此以外,我从未移除了大均在此之前的代码,只遗失了这个数据库的外加素材。)

数据库 5. Hello-world-view.ts

克隆

//...

import { customElement,property } from 'lit/decorators.js';

import { foo } from 'Frontend/generated/MyEndpoint';

@customElement('hello-world-view')

export class HelloWorldView extends View {

//...

@property()

myString: string = "";

constructor() {

super();

this.getString();

}

render() {

return html----

//...

${this.myString}

----;

}

async getString() {

this.myString = await foo();

}

}

这里的应将都是 MyEndpoint 模块里面借助于 foo() 函数,然后应用于它来初始化我们先前界定的远程后侧 Java 步骤。

为此,我们应用于 Lit TypeScript 记事 @property 在类上界定了一个反应要素,命名为string。我们将应用于此要素来磁盘来自服务器的值。为了装入它,我们初始化 async getString() 步骤,该步骤最简单地初始化 foo() 函数,并将离开值填入 myString。

Hilla 处理过程了大均工作,除此以外开展远程获取,因此我们不必权衡太多。

在 Hilla 里面应用于 Vaadin 接口

正如我先前提到的,Hilla 是 Vaadin Fusion,因此应用于 Hilla 借助于的操作系统可以透过你有可能从该组件里面了解的所有精心设计的接口。例如,让我们应用于 Vaadin 网格接口来查找很强书名和编者的小说作品集。

首先,我们将创建者一个假设;也,它只包内涵两个字符串,如数据库 6 右三幅。这个文档是一个典型的 Java 数据集;也。将其保留为 /src/main/java/com/example/application/Novel.java。

数据库 6. 用于磁盘小说作品的假设;也

克隆

package com.example.application;

import javax.validation.constraints.NotBlank;

public class Novel {

@NotBlank

private String title;

@NotBlank

private String author;

public Novel(String title, String author){

this.title = title;

this.author = author;

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public String getAuthor() {

return author;

}

public void setAuthor(String author) {

this.author = author;

}

}

在数据库 7 里面,我们给予来自 MyEndpoint 的小说作品此表。

数据库 7. 很强我小时候的小说作品此表的 MyEndpoint

克隆

package com.example.application;

import java.util.*;

import java.util.ArrayList;

import java.util.List;

import com.vaadin.flow.server.auth.AnonymousAllowed;

import dev.hilla.Endpoint;

import dev.hilla.Nonnull;

@Endpoint

@AnonymousAllowed

public class MyEndpoint {

private final List novels = new ArrayList();

MyEndpoint(){

Novel empireFalls = new Novel("Empire Falls", "Richard Russo");

Novel reservationBlues = new Novel("Reservation Blues", "Sherman Alexie");

Novel theAthenianMurders = new Novel("The Athenian Murders", "José Carlos Somoza");

this.novels.add(empireFalls);

this.novels.add(reservationBlues);

this.novels.add(theAthenianMurders);

}

public @Nonnull List getNovels() {

return this.novels;

}

}

在数据库 7 里面,我们打算了几本很强编者的小说作品,并将它们填入到 novels 要素里面。然后我们在 getNovels() 侧点里面公开数据集。

如今,让我们显示新近数据集,如数据库 8 右三幅。(除此以外,数据库 8 只显示了代码的变更均。)

数据库 8. 应用于网格显示小说作品

克隆

//...

import { foo, getNovels } from 'Frontend/generated/MyEndpoint';

import '@vaadin/grid/vaadin-grid';

@customElement('hello-world-view')

export class HelloWorldView extends View {

@property()

novels: object = {};

constructor() {

//...

this.initNovels();

}

render() {

return html----

----;

}

async initNovels(){

this.novels = await getNovels();

}

在此数据库里面,我们从 Hilla 为我们转换成的 frontend/generated/MyEndpont 借助于 getNovels ;也。然后,我们应用于该步骤作为 this.novels 素材的;也。

最后,我们应用于 this.novels 为借助于的 vaadin-grid 接口给予 .items 要素。最终结果是一个格结构设计设计良好的网格接口,而且工作量很小。

结语

本文讲解了基于 Vaadin Fusion 的全栈组件 Hilla。Hilla 为应用于声势浩大结构设计设计后侧借助于 Java Web 操作系统给予了良好的集成互动。起先了Vaadin,它有许多有用的接口可供应用于。本文示例确实会让你对Hilla的应用于有一个初步的了解。

日文版讲解

陈豪,51CTO乡村编辑,很强6年工作方面的高级系统工程师。擅长技能有Linux内嵌汇编语言,Python,C,C++,Java,Linux驱动程序分析,智能机器人软件设计等。

文中书名:Intro to Hilla: The full-stack Java framework,编者:Matthew Tyson

海露滴眼液开封后可以使用多久
宁波男科医院哪里好
免疫细胞一般价格表
北京白癜风医院哪家专业好
宫颈癌可以治好吗
小儿神经内科
急支糖浆是治疗热咳还是寒咳
感冒
头晕
白带多粘稠怎么办

上一篇: 40岁了,却还是缺少了40几岁的城府,被人一暖就微,一冷就冰,性子直心又软,说话不会拐弯抹角,吃不完的亏,却依然不长记性。DOU+小助手

下一篇: 关键时刻真能救命!苹果最新搭载颗卫星紧急呼叫功能!

友情链接