2016-04-10 54 views
3

我是一位非常新的Kotlin Java開發人員。我喜歡這門語言,但我喜歡用它來完成Web應用程序的輕鬆。問題是我無法弄清楚如何在瀏覽器中運行Kotlin HTML builder文件,以便我可以在kotlin中創建一個基本的網頁框架。我可以在IDE中輸出它,但它似乎很難讓它在我的瀏覽器中運行。這可能是一個愚蠢的問題,我錯過了一些非常明顯的事情,但我似乎無法在網上找到答案。在瀏覽器中運行Kotlin HTML Builder

請記住,我沒有使用Intelli-J IDE。會喜歡,但不能僅僅爲了在Kotlin進行網絡開發而付出代價。一直在使用Eclipse。

在此先感謝。

+0

Kotlin HTML構建器AFAIK只是構建器如何與Kotlin一起使用來創建DSL的示例。我不會建議它在任何實際使用情況下使用它。使用你喜歡的Web框架(Spring-MVC,普通的servlets/JSP,無論什麼),只需在Kotlin而不是Java中編寫你的類。 –

+0

這解釋了很多。哈哈。謝謝您的幫助。 –

+0

InteliJ Community Edition有什麼問題?它是免費的和OOS https://www.jetbrains.com/idea/download/ – voddan

回答

3

當您使用Kotlin html構建器kotlinx.html或任何其他類型的,您需要,以及構建他們爲了獲得瀏覽器的HTML。

沒有「Kotlin builder文件」這樣的東西。那些結構是純Kotlin代碼,所以你把它們寫在你的(服務器?)代碼庫中,編譯它們然後調用它們來生成HTML響應。這也意味着您需要一個(普通Java)路由器框架,例如Spark。總之,html-builders是生成HTML字符串的一種方式,所以它們不包含在其他地方發佈HTML的方式。

1

Kotlinx本身沒有任何實用程序將結果發送到用戶的瀏覽器。這只是一個可以創建HTML字符串的常規Kotlin代碼。您需要一種方法將其發送給用戶。有一些。

最簡單的是普通老Java servlets。任何人仍在使用它們?

@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將在香草春太工作:

@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<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:

<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> 

您也可以嘗試DropwizardNinja框架。

另外,你可以看看Kara - 一個專門爲Kotlin設計的web框架 - 但它仍然處於alpha階段。

0

我可能會在這裏丟失一些東西,但是如果使用kotlinx.html javascript版本,則生成的js代碼將作爲DOM構建器執行......如果這是必需的,可以添加更多內容。

相關問題