Kotlin DSL
webforJ tarjoaa Kotlin Domain Specific Language, eli DSL:n, jonka avulla voit rakentaa käyttöliittymiä tiiviillä, tyyppi-turvallisella syntaksilla. Sen sijaan, että kirjoitat imperatiivista Java-koodia, kirjoitat deklaraatiokoodia, joka lukee kuin kuvaus käyttöliittymäsi rakenteesta.
FlexLayout layout = new FlexLayout();
layout.setDirection(FlexDirection.COLUMN);
layout.setSpacing("10px");
TextField name = new TextField();
name.setLabel("Nimi");
name.setPlaceholder("Nimesi");
layout.add(name);
Button submit = new Button("Lähetä", ButtonTheme.PRIMARY);
submit.onClick(e -> handleSubmit());
layout.add(submit);
flexLayout {
direction = FlexDirection.COLUMN
styles["gap"] = "10px"
textField("Nimi", placeholder = "Nimesi")
button("Lähetä", ButtonTheme.PRIMARY) {
onClick { handleSubmit() }
}
}
DSL hyödyntää Kotlinin laajennusfunktioita, vastaanottajalla varustettuja lambdaja ja oletusparametreja luodakseen luonnollisen rakennussyntaksin. Komponentit pesiytyvät toistensa sisälle, konfigurointi tapahtuu lohkossa, ja kääntäjä havaitsee rakenteelliset virheet ennen suorittamista.
Setup
Erillistä Kotlin-asennusta ei tarvita. Maven huolehtii käännöksestä Kotlin Maven -lisäosan kautta, joten mikä tahansa projekti, joka jo kääntää Mavenilla, voi lisätä Kotlin-tuen riippuvuus- ja lisäosasäätöjen avulla.
Jos haluat käynnistää webforJ-projektin käyttäen Kotlinia kaikilla tarvittavilla kokoonpanoilla valmiiksi, katso tämä osio webforJ Kotlin -aloitusprojektin käytöstä.
Riippuvuudet
Lisää webforJ Kotlin DSL -moduuli ja Kotlinin standardikirjasto pom.xml-tiedostoon:
<dependency>
<groupId>com.webforj.kotlin</groupId>
<artifactId>webforj-kotlin</artifactId>
<version>${webforj.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
<version>${kotlin.version}</version>
</dependency>
Jos aiot kirjoittaa testejä Kotlinilla, lisää myös Kotlin-testiriippuvuus. Se integroituu JUnit:iin:
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test</artifactId>
<version>${kotlin.version}</version>
<scope>test</scope>
</dependency>
Kotlin Maven -lisäosa
Lisää Kotlin Maven -lisäosa kääntämään sekä Kotlin- että Java-lähdekoodisi. Alla oleva sourceDirs-konfiguraatio sallii Kotlin- ja Java-tiedostojen elää samassa projektissa:
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>src/main/java</sourceDir>
<sourceDir>target/generated-sources/annotations</sourceDir>
<sourceDir>src/main/kotlin</sourceDir>
</sourceDirs>
</configuration>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>src/test/java</sourceDir>
<sourceDir>target/generated-test-sources/test-annotations</sourceDir>
<sourceDir>src/test/kotlin</sourceDir>
</sourceDirs>
</configuration>
</execution>
</executions>
<configuration>
<jvmTarget>${maven.compiler.target}</jvmTarget>
</configuration>
</plugin>
Näiden lisäysten myötä mvn compile kääntää Kotlin-lähteet yhdessä Java-lähteiden kanssa. Kotlin-tiedostot voivat olla src/main/kotlin tai src/main/java -kansiossa, ja lisäosa huolehtii molemmista.
Kotlin kääntyy JVM-tavukoodiksi, joten se toimii yhdessä olemassa olevan Java-koodin kanssa. Voit käyttää DSL- rakennettuja Kotlin-kokoonpanoja Java-luokista, pesiyttää standardeja Java-komponentteja DSL-lohkoihin add()-metodilla, ja sekoittaa Kotlin- ja Java-tiedostoja samassa projektissa.
Kotlin aloitusprojekti
Jos haluat ohittaa manuaalisen asetuksen, webforJ Kotlin Starter -repo tarjoaa valmiin projektin kaikilla riippuvuuksilla ja lisäosasäätöillä jo paikallaan. Kloonaa se ja ala rakentaa DSL:n kanssa heti.
Aiheita
Seuraavat aiheet käsittelevät DSL:n käyttöä sekä sen laajentamista kaikkiin muokattuihin komponentteihin tai yhdistelmiin, joita luot.
📄️ Using the DSL
Kotlin DSL tarjoaa rakentajatoimintoja webforJ-komponenteille. Kukin toiminto luo komponentin, lisää sen parentti-konttiinsa ja suorittaa konfigurointilohkon. Tämä sivu käsittelee malleja ja käytäntöjä, joita käytät rakentaessasi käyttöliittymiä DSL:llä.
📄️ Extending the DSL
Kotlin DSL on laajennettavissa, mikä mahdollistaa DSL-funktioiden lisäämisen mukautetuille komponenteille tai kolmannen osapuolen kirjastoille. Voit rakentaa yhdistettyjä komponentteja, jotka käyttävät DSL:ää sisäisesti.