DSL de Kotlin para webforJ
Vista previaEscríbelo en Kotlin. Conserva tu Java.
El DSL de Kotlin permite crear interfaces de usuario con webforJ mediante una sintaxis concisa y con seguridad de tipos. En lugar de hacer llamadas imperativas, escribes código declarativo que se lee como una descripción de la pantalla y se compila en el mismo proyecto que tu código Java.
La clase que conoces, como constructor
Buttonse convierte enbutton()TextFieldse convierte entextField()FlexLayoutse convierte enflexLayout()Breakse convierte en`break`()
Los botones, campos, diseños, diálogos, paneles laterales, listas y elementos HTML tienen uno cada uno, con el nombre de la clase en camelCase.
Una misma pantalla, dos idiomas
Lee Java. Luego, lee Kotlin.
Ambos lados construyen los mismos componentes con las mismas clases de webforJ. La versión de Kotlin omite los setters y las llamadas a add(): los componentes se anidan y la configuración se realiza en bloques.
JavaHelloView.java
@Route("/hello")
public class HelloView extends Composite<FlexLayout> {
private final FlexLayout self = getBoundComponent();
private TextField name = new TextField("What is your name?");
private Button greet = new Button("Say hello");
public HelloView() {
greet.setTheme(ButtonTheme.PRIMARY)
.addClickListener(e ->
Toast.show("Welcome, " + name.getValue() + "!",
Theme.SUCCESS));
self.add(name, greet);
}
}
KotlinHelloView.kt
@Route("hello")
class HelloView : Composite<FlexLayout>() {
private val self = boundComponent
init {
self.apply {
val name = textField("What is your name?")
button("Say hello") {
theme = ButtonTheme.PRIMARY
onClick {
Toast.show("Welcome, ${name.text}!", Theme.SUCCESS)
}
}
}
}
}
Lo que te ofrece el DSL
Constructores, bloques y lambdas
Cada función constructora crea un componente, lo agrega a su contenedor principal y ejecuta un bloque de configuración. El resto del DSL se basa en eso.
Bloques de configuración
El bloque recibe el componente como this, así que puedes establecer sus propiedades y llamar a sus métodos directamente.
textField("Email") {
placeholder = "you@example.com" // this.placeholder
required = true // this.required
onModify { validate() } // this.onModify(...)
}
Constructores con nombres de componentes
Cada componente tiene una función con el nombre de su clase en camelCase. La mayoría recibe, antes del bloque, las opciones que se configuran con más frecuencia, como una etiqueta o un texto de marcador de posición.
Bloques anidados
Los componentes que contienen elementos secundarios aceptan llamadas DSL anidadas en su bloque, por lo que el código refleja la estructura de la pantalla.
Eventos como lambdas
Los listeners usan métodos con el prefijo on que reciben una lambda, como onClick y onModify.
Seguridad del ámbito
Los elementos secundarios solo se agregan a componentes que los admiten. Agregarlos por error a un ámbito externo no compila.
Estilos y nombres de clases
La propiedad styles permite acceder a las propiedades CSS mediante corchetes, igual que setStyle() en Java. Los nombres de clase se añaden con +=.
Junto a tu código Java
Kotlin se compila en bytecode de la JVM. Usa componentes compuestos de Kotlin desde clases Java y anida componentes Java en bloques DSL con add().
Ampliación del DSL
Tus propios componentes, también como constructores
Los componentes personalizados y las bibliotecas de terceros se incorporan al DSL mediante una función de extensión en HasComponents. El helper init añade el componente a su elemento padre, ejecuta el bloque y lo devuelve. Los componentes compuestos que crees con el DSL obtienen una función del mismo modo.
fun @WebforjDsl HasComponents.starRating(
block: @WebforjDsl StarRating.() -> Unit = {}
): StarRating {
return init(StarRating(), block)
}
Cómo empezar
Añadir Kotlin a un proyecto Maven
El DSL de Kotlin está disponible a partir de webforJ 25.12. Un proyecto que ya se compila con Maven necesita una dependencia y un plugin.
- 1
Añadir las dependencias
Añade el módulo DSL de Kotlin de webforJ y la biblioteca estándar de Kotlin a tu pom.xml.
- 2
Añadir el complemento de Maven para Kotlin
Compila tus fuentes de Kotlin y Java en una sola compilación. No necesitas instalar Kotlin por separado.
- 3
Añade Kotlin junto a Java
Los archivos Kotlin pueden ir en su propia carpeta de código fuente o en la misma carpeta que los archivos Java.
- 4
Escribe una vista y compila.
Escribe una vista con los builders. Luego, Maven compila tu código Kotlin junto con Java.