Ejemplo de Kotlin JS para desarollo web

Un ejemplo simple, similar al código que vimos en la entrada Ejemplo: Html Builder (KotlinJS), sobre cómo usar Kotlin en el desarrollo web en lugar de Javascript. Adaptación del código Kotlin JS for Web development disponible en el repositorio kotlinjs-example.
<!--index.html--> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>KotlinJS</title> </head> <body> <script src="out/production/Kotlin Web/lib/kotlin.js"></script> <script src="out/production/Kotlin Web/Kotlin Web.js"></script> </body> </html>
//Main.tk import html.* import kotlin.browser.document fun main() { document.body?.apply { h1("Desarrollo Web con KotlinJS") div { p("Test para generar código HTML con Kotlin") p("Iterando sobre un rango con for:") ul { for (i in 1..10) { if (i < 10) li("0$i") else li("$i") } } } } }
//html.kt package html import org.w3c.dom.Element import kotlin.browser.document // enumeramos las etiquetas HTML enum class HtmlTag(val text: String) { H1("h1"), DIV("div"), P("p"), UL("ul"), LI("li") } // funciones sobre objetos de tipo Element que devuelven el resultado // de una función que toma como primer argumento un valor del enum fun Element.h1(text: String): Element = textElement(HtmlTag.H1, text) fun Element.div(f: Element.() -> Unit) = structuralElement(HtmlTag.DIV, f) fun Element.p(text: String): Element = textElement(HtmlTag.P, text) fun Element.ul(f: Element.() -> Unit) = structuralElement(HtmlTag.UL, f) fun Element.li(text: String) = textElement(HtmlTag.LI, text) private fun Element.textElement(tag: HtmlTag, text: String): Element { return createTag(tag) { textContent = text } } private fun Element.structuralElement(tag: HtmlTag, f: Element.() -> Unit): Element { return createTag(tag) { f() } } private fun Element.createTag(tag: HtmlTag, f: Element.() -> Unit): Element { val element = document.createElement(tag.text) element.f() append(element) return element }El resultado se ve así en el navegador:

Comentarios
Publicar un comentario