Vaadin의 장점은 단순함에 있습니다. 백엔드 코드만 작성하면 됩니다 . 잘 읽으세요. Vaadin 개발자는 Java나 JVM 언어, 그리고 Vaadin API만 알면 됩니다. 런타임에 Vaadin은 클라이언트 측 코드, 즉 HTML, JavaScript, CSS를 만듭니다. 이러한 접근 방식은 개발자가 애플리케이션의 핵심 기능에 집중할 수 있게 하여 개발 프로세스를 보다 생산적으로 만듭니다.
위에서 CSS를 언급했습니다. Vaadin을 사용하면 테마 라는 전용 재사용 가능 패키지에서 CSS를 개발할 수 있습니다. 장식은 테마를 백엔드 개발과 병행하여 개발할 수 있으며 후자를 고수하지 않아도 됩니다. 코드는 특정 템플릿을 사용하거나 HTML에 특정 클래스를 추가할 필요가 없습니다.
<project> <properties> <java.version>17</java.version> <kotlin.version>1.9.24</kotlin.version> <vaadin.version>24.4.9</vaadin.version> <!--1--> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>com.vaadin</groupId> <artifactId>vaadin-bom</artifactId> <!--2--> <version>${vaadin.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>com.vaadin</groupId> <artifactId>vaadin-spring-boot-starter</artifactId> <!--3--> </dependency> </project>
Vaadin은 기본적으로 루트에 매핑되는 일반 Java Servlet을 기반으로 합니다. Vaadin Spring Boot 통합을 통해 기본값을 재정의할 수 있습니다. 코드베이스가 여러 프레임워크를 통합하기 때문에 관련 속성을 통해 /vaadin
에 매핑합니다.
vaadin.url-mapping=/vaadin/*
@Route("/") //1 @PageTitle("Vaadin") //2 class TodoView(todos: ArrayList<Todo>) : VerticalLayout() { //3-4-5 init { //6 // ... //7 } }
RootComponent
클래스를 정의합니다.VerticalLayout
은 Vaadin이 HTML div
로 렌더링하는 클래스입니다.init()
함수를 실행합니다. 위의 스니펫에서는 Vaadin에서 제공하는 컴포넌트 인 VerticalLayout
을 상속했습니다.
Vaadin Design System에는 UI를 빌드하는 데 사용할 수 있는 구성 요소 세트가 포함되어 있습니다. 구성 요소에는 클라이언트 측 개발을 위한 TypeScript API 외에도 서버 측 Java API가 있습니다.구성 요소를 사용하려면 먼저 구성 요소를 만든 다음 포함된 레이아웃에 구성 요소를 추가합니다.
--
일부 구성 요소는 다른 구성 요소를 포함할 수 있으며 하위 구성 요소를 배치하는 방법을 알고 있습니다. 예를 들어 VerticalLayout
구성 요소를 열에 위에서 아래로 배치하고 HorizontalLayout
은 행에 왼쪽에서 오른쪽으로 배치합니다.
add(Label("Hello")) //1 add(Label("world!"))
init()
함수의 맥락에서.
label("Hello") //1 label("world!")
label()
HasComponent
인터페이스의 Karibu DSL 확장 함수입니다.
Karibu는 훌륭하지만 약간의 단점이 있습니다. 전체 API에 대한 확장 기능을 제공하지 않습니다. 예를 들어, Grid
구성 요소에 푸터를 추가하려면 일반 API로 돌아가야 합니다.
appendFooterRow().apply { getCell(completedProp).component = Button("Clean up") { todos.removeIf { it.completed } refresh() } }
메인프레임이 컴퓨팅의 왕이었을 때는 터미널을 통해 액세스했습니다. UI는 매우 제한적이었고 렌더링은 "멍청한" 터미널에서 이루어졌습니다. 개인용 컴퓨터는 렌더링 기능을 서버에서 클라이언트로 옮겼습니다. 이때 개발자는 트리거를 통해 구성 요소에 동작을 첨부했습니다. 예를 들어 사용자가 버튼을 클릭하면 Hello world!
인쇄하도록 바인딩할 수 있습니다.
Checkbox(todo.completed).apply { //1 addValueChangeListener { todo.completed = it.value } //2 }
값을 사용하여 새로운 Checkbox
구성 요소를 초기화합니다.
더 자세히 알아보려면:
원래 2024년 10월 13일 에 게시됨