在浏览器中运行Kotlin HTML Builder

我是Kotlin的新开发人员。 我喜欢这门语言,而且我喜欢用它来完成Web应用程序的轻松。 问题是,我不知道如何在浏览器中运行Kotlin HTML builder文件,以便我可以在kotlin中创建一个基本的网页框架。 我可以在IDE中输出它,但是看起来好像是让它在我的浏览器中运行是很愚蠢的。 这可能是一个愚蠢的问题,我错过了一些非常明显的东西,但我似乎无法在网上find答案。

请记住,我没有使用Intelli-J IDE。 会喜欢,但不能付出鼻子只是为了在Kotlin做网页开发。 一直在使用Eclipse。

提前致谢。

当您使用Kotlin html构建器kotlinx.html或任何其他types时,您需要构建它们以获取浏览器的HTML。

没有“Kotlin builder文件”这样的东西。 这些结构是纯Kotlin代码,所以你把它们写在你的(服务器)代码库中, 编译它们,然后调用它们来生成HTML响应。 这也意味着你需要一个(普通的Java)路由器框架,例如Spark

总而言之,html-builders是生成HTML字符串的一种方式,所以它们不包括在其他地方发布HTML的方法。

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

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

 @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也可以在vanilla 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是大量年轻的Java微框架之一。 请注意,在SparkJava的情况下,您可以在您的main写入路由:

 fun main(args: Array): 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:

    

Kotlin is awesome

Read more about it

你也可以尝试Dropwizard或忍者框架。

另外,你可以看一看卡拉 – 专门为科特林设计的网页框架 – 但它仍然处于alpha阶段。

我可能会错过这里的东西,但如果使用kotlinx.html JavaScript版本,结果js代码确实执行作为一个DOM生成器…可以添加更多,如果这是必需的。