Siirry pääsisältöön

Kotlin DSL webforJ:lle

Esikatselu

Kirjoita se Kotlinilla. Säilytä Java.

Kotlin DSL:llä rakennat webforJ-käyttöliittymiä tiiviillä ja tyyppiturvallisella syntaksilla. Imperatiivisten kutsujen sijaan kirjoitat deklaratiivista koodia, joka kuvaa näyttöä, ja koodi käännetään samassa projektissa Java-koodisi kanssa.

Tuntemasi luokka rakentajana

  • Buttonmuuttuubutton()
  • TextFieldmuuttuutextField()
  • FlexLayoutmuuttuuflexLayout()
  • Breakmuuttuu`break`()

Painikkeilla, kentillä, asetteluilla, valintaikkunoilla, sivupaneeleilla, listoilla ja HTML-elementeillä on kullakin omansa, joka on nimetty luokan nimen mukaisesti camelCase-muodossa.

Sama näyttö, kaksi kieltä

Lue Java. Lue sitten Kotlin.

Molemmat puolet rakentavat samat komponentit samoilla webforJ-luokilla. Kotlin-puolella ei tarvita settereitä eikä add()-kutsuja: komponentit sisäkkäistyvät toisiinsa, ja määritykset tehdään lohkoissa.

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)
}
}
}
}
}

Mitä DSL tarjoaa sinulle

Rakentajat, lohkot ja lambdat

Jokainen builder-funktio luo komponentin, lisää sen yläsäiliöön ja suorittaa määrityslohkon. Muu DSL perustuu tähän.

Määrityslohkot

Lohko saa komponentin muodossa this, joten voit asettaa sen ominaisuudet ja kutsua sen metodeja suoraan.

textField("Email") {
placeholder = "you@example.com" // this.placeholder
required = true // this.required
onModify { validate() } // this.onModify(...)
}
  • Komponenttien mukaan nimetyt rakentajat

    Jokaisella komponentilla on luokan nimen mukaan camelCase-muotoon nimetty funktio. Useimmat funktiot ottavat ennen lohkoa yleisimmin määrittämäsi asetukset, kuten otsikon tai paikkamerkin.

  • Sisäkkäiset lohkot

    Lapsia sisältävät komponentit hyväksyvät lohkossaan sisäkkäiset DSL-kutsut, joten koodi vastaa näytön rakennetta.

  • Tapahtumat lambdoina

    Kuuntelijat käyttävät on-etuliitteisiä metodeja, jotka ottavat vastaan lambdan, kuten onClick ja onModify.

  • Näkyvyysalueen turvallisuus

    Lapset kuuluvat vain niitä tukeviin komponentteihin. Niiden lisääminen vahingossa ulompaan scopeen aiheuttaa käännösvirheen.

  • Tyylit ja luokkien nimet

    styles-ominaisuus mahdollistaa CSS-ominaisuuksien käytön hakasulkeilla samaan tapaan kuin setStyle() Javassa. Luokkanimet lisätään +=-operaattorilla.

  • Java-koodisi vieressä

    Kotlin käännetään JVM-tavukoodiksi. Käytä Java-luokista tehtyjä Kotlin-koosteita ja sijoita Java-komponentteja sisäkkäin DSL-lohkoihin add()-metodilla.

DSL:n laajentaminen

Omat komponenttisi, myös rakentajina

Mukautetut komponentit ja kolmannen osapuolen kirjastot liitetään DSL:ään HasComponents-laajennusfunktion avulla. init-apufunktio lisää komponentin yläkomponenttiinsa, suorittaa lohkon ja palauttaa komponentin. DSL:llä rakentamasi yhdistelmäkomponentit saavat funktion samalla tavalla.

StarRating.kt
fun @WebforjDsl HasComponents.starRating(
block: @WebforjDsl StarRating.() -> Unit = {}
): StarRating {
return init(StarRating(), block)
}
DSL:n laajentaminen dokumentaatiossa

Näin pääset alkuun

Lisää Kotlin Maven-projektiin

Kotlin DSL on käytettävissä webforJ 25.12:sta alkaen. Mavenilla jo rakentuvaan projektiin tarvitaan riippuvuus ja liitännäinen.

  1. 1

    Lisää riippuvuudet

    Lisää webforJ Kotlin DSL -moduuli ja Kotlinin standardikirjasto pom.xml-tiedostoosi.

  2. 2

    Lisää Kotlin Maven -plugin-in lisäosa?

    Se kääntää Kotlin- ja Java-lähdekoodisi yhdellä koontikerralla. Kotlinia ei tarvitse asentaa erikseen.

  3. 3

    Lisää Kotlin Java-koodisi rinnalle

    Kotlin-tiedostot voivat olla omassa lähdekansiossaan tai samassa kansiossa Java-tiedostojesi kanssa.

  4. 4

    Kirjoita näkymä ja käännä

    Luo näkymä builderien avulla. Maven kääntää sitten Kotlin-koodisi Java-koodisi rinnalla.