在浏览器中运行Kotlin HTML Builder

Running Kotlin HTML Builder in the Browser

我是Kotlin的Java开发人员。 虽然我喜欢这种语言,但是我喜欢用它完成Web应用程序的轻松程度。 问题是我无法弄清楚如何在浏览器中运行Kotlin HTML构建器文件,以便可以在kotlin中创建基本的网页框架。 我可以在IDE中输出它,但是要使其在我的浏览器中运行似乎很难。 这可能是一个愚蠢的问题,我遗漏了一些非常明显的内容,但似乎无法在线找到答案。

请记住,我没有使用Intelli-J IDE。 很乐意,但无力承担仅在Kotlin中进行Web开发的费用。 一直在使用Eclipse。

提前致谢。


当您使用Kotlin html构建器kotlinx.html或任何其他此类构建器时,您需要构建它们才能为浏览器获取HTML。

没有" Kotlin构建器文件"之类的东西。这些构造是普通的Kotlin代码,因此您可以在(服务器?)代码库中编写它们,进行编译,然后调用它们以生成HTML响应。这也意味着您需要一个(普通的Java)路由器框架,例如Spark

总结起来,html-builders是一种生成HTML字符串的方法,因此它们不包括将HTML运送到其他地方的方法。


Kotlinx本身没有任何实用程序可将结果发送到用户的浏览器。这只是可以创建HTML字符串的常规Kotlin代码。您需要一种将其发送给用户的方法。有一些。

最简单的是普通的旧Java servlet。有人还在用吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@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今天非常流行。但是,此@Controller也可以在香草弹簧中使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@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是众多年轻的Java微框架之一。请注意,在使用SparkJava的情况下,您只需在main内部编写路由即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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"
                    }
                }
            }
        }
    })
}

我要离开依赖关系管理,运行应用程序,并猜测正确的URL,以便您访问生成的页面。以上所有示例均将产生以下HTML:

1
2
3
4
5
6
7
8
9
<html>
  <head title="Hello from kotlinx.html + Servlets"></head>
  <body>
    Kotlin is awesome
    <p>
Read more about it
</p>
  </body>
</html>

您也可以尝试Dropwizard或Ninja框架。

另外,您可以看一下Kara –一种专为Kotlin设计的Web框架–但它仍处于alpha阶段。


我在这里可能会遗漏一些东西,但是如果使用kotlinx.html javascript版本,则生成的js代码确实可以作为DOM构建器执行...如果需要的话,可以添加更多内容。