Ejecutando Kotlin HTML Builder en el browser

Soy un desarrollador de Java que es muy nuevo para Kotlin. Aunque me encanta el lenguaje, y me gusta cuán fácilmente se pueden hacer las aplicaciones web con él. El problema es que no puedo encontrar la manera de ejecutar los files del constructor HTML de Kotlin en el browser, para poder crear un esqueleto básico de la página web en kotlin. Puedo producirlo en el IDE, pero es tonto lo difícil que parece ser que se ejecute en mi browser. Esta puede ser una pregunta tonta y me falta algo muy obvio, pero parece que no puedo encontrar la respuesta en línea.

Tenga en count que no estoy usando el Intelli-J IDE. Me encantaría, pero no puedo permitirme pagar la nariz solo para hacer desarrollo web en Kotlin. He estado usando Eclipse

Gracias por adelantado.

Cuando utiliza Kotlin html builders kotlinx.html o cualquier otro de ese tipo, debe, bueno, comstackrlos para get HTML para el browser.

No existen los "files de construcción de Kotlin". Esos constructos son simples códigos de Kotlin, por lo que los escribe dentro de su base de código (server?), Comstackrlos y luego invocarlos para generar respuestas en HTML. Esto también significa que necesita un marco de enrutador (Java normal), como Spark por ejemplo.

En resumen, los html-builders son una forma de generar cadenas de HTML, por lo que no incluyen una forma de enviar el HTML a otra parte.

Kotlinx no tiene utilidades para enviar el resultado al browser del usuario. Es solo un código de Kotlin normal que puede crear una cadena de HTML. Necesitas una forma de enviársela al usuario. Hay algunos.

El más simple es simple viejo servlets de Java . ¿Alguien todavía los usa?

 @WebServlet(urlPatterns = arrayOf("/servlet"), loadOnStartup = 1) class KotlinxHtmlServlet : HttpServlet() { override fun doGet(request: HttpServletRequest?, response: HttpServletResponse?) { response!!.setContentType("text/html") response!!.writer.appendHTML(true).html { head { title = "Hello from kotlinx.html + Servlets" } body { h1 { +"Kotlin is awesome" } p { +"Read more about " a("http://kotlinlang.org") { target = ATarget.blank +"it" } } } } } } 

Spring Boot es muy popular hoy en día. Sin embargo, este @Controller también funcionará en vainilla Spring:

 @Controller class KotlinxHtmlController { @ResponseBody @RequestMapping(path = arrayOf("controller"), method = arrayOf(RequestMethod.GET)) fun doGet(): String { return createHTML(true).html { head { title = "Hello from kotlinx.html + Servlets" } body { h1 { +"Kotlin is awesome" } p { +"Read more about " a("http://kotlinlang.org") { target = ATarget.blank +"it" } } } } } } 

SparkJava es uno de los muchos microarmas jóvenes de Java. Tenga en count que, en el caso de SparkJava, puede simplemente escribir routes dentro de su main :

 fun main(args: Array<String>): Unit { get("spark", { request: Request, response: Response -> createHTML(true).html { head { title = "Hello from kotlinx.html + Servlets" } body { h1 { +"Kotlin is awesome" } p { +"Read more about " a("http://kotlinlang.org") { target = ATarget.blank +"it" } } } } }) } 

Dejo la administración de la dependencia, ejecuto la aplicación y adivino las URL correctas para acceder a las páginas generadas. Todos los ejemplos anteriores darán como resultado este HTML:

 <html> <head title="Hello from kotlinx.html + Servlets"></head> <body> <h1>Kotlin is awesome</h1> <p>Read more about <a href="http://kotlinlang.org" target="_blank">it</a></p> </body> </html> 

También puedes probar los frameworks Dropwizard o Ninja .

Además, puedes echar un vistazo a Kara , un framework web especialmente diseñado para Kotlin, pero todavía está en fase alfa.

Me puede faltar algo aquí, pero si se usa kotlinx.html versión de JavaScript, el código js resultante funciona como un generador de DOM … puede agregar más si esto es lo que se requiere.

  • Kotlin: ¿puedes explicar las funciones de extensión de miembros?
  • getContentResolver.openInputStream devuelve una secuencia vacía
  • ¿Por qué mi configuration de RxJava está bloqueando mi subprocess de interfaz de usuario? Trabajar con la callback BluetoothAdapter.startLeScan
  • Kotlin: Cómo trabajar con los cambios de Lista: Lanzamiento no seleccionado: kotlin.collections.List <Kotlin.Any?> A kotlin.colletions.List <Waypoint>
  • ¿Cómo especificar los generics parametrizados para la propiedad de Kotlin?
  • "La respuesta ya se ha escrito" con Vertx
  • Kotlin con Android DataBinding en Android Studio 3.0 canary 2
  • ¿Los saltos de línea en cadenas sin formatting dependen de la plataforma?
  • No se pueden volver a asignar las variables locales
  • Las variables de desestructuración de Kotlin no funcionan con Pair, Triple o Data Class
  • Kotlin: Intrinsics.areEqual loop infinito (desbordamiento de stack)