Kotlin DSL webforJ:lle
EsikatseluKirjoita 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.
fun @WebforjDsl HasComponents.starRating(
block: @WebforjDsl StarRating.() -> Unit = {}
): StarRating {
return init(StarRating(), block)
}
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
Lisää riippuvuudet
Lisää webforJ Kotlin DSL -moduuli ja Kotlinin standardikirjasto pom.xml-tiedostoosi.
- 2
Lisää Kotlin Maven -plugin-in lisäosa?
Se kääntää Kotlin- ja Java-lähdekoodisi yhdellä koontikerralla. Kotlinia ei tarvitse asentaa erikseen.
- 3
Lisää Kotlin Java-koodisi rinnalle
Kotlin-tiedostot voivat olla omassa lähdekansiossaan tai samassa kansiossa Java-tiedostojesi kanssa.
- 4
Kirjoita näkymä ja käännä
Luo näkymä builderien avulla. Maven kääntää sitten Kotlin-koodisi Java-koodisi rinnalla.