我们最近宣布了Jooby的新稳定版本 。 这个新版本带有几个令人兴奋的新功能。
在本文中,我们将讨论其中一些功能。
Kotlin一流的支持
Kotlin支持绝对是1.1中最令人兴奋的功能。 众所周知,Java库只能在Kotlin中运行 ,因此库/框架提供程序不需要执行任何特殊操作。
package starter.kotlin
import org.jooby.*
class App: Jooby() {
init {
get("/", {req->
"Hello " + req.param("name").value("Kotlin")
});
}
}
fun main(args: Array<String>) {
Jooby.run(::App, args);
}
不错,但是这里没有什么特别的,我们只是将Java到Kotlin进行一对一的翻译。
Kotlin成语
因为我们喜欢Kotlin ,所以我们提供了Kotlin模块 ,该模块允许我们编写惯用的Kotlin :
import org.jooby.*
fun main(args: Array<String>) {
run(*args) {
get {
val name = param("name").value("World")
return "Hello $name!"
}
}
}
好多了,嗯?
run
函数是类型安全的构建器,可让您隐式访问Jooby
实例。 与get
函数相同,但是这次允许您隐式访问Request
对象。
这是另一个成语:
package starter.kotlin
import org.jooby.*
fun main(args: Array<String>) {
run(*args) {
route("/api/pets") {
get({->
// list pets
})
get("/:id", {req ->
// pet by ID
val id = req.param("id").intValue
})
post({req ->
// list pets
val pet = Petreq.body(Pet::class);
})
}
}
}
route
惯用语将一条或多条路由归到一条公共路径下,例如: /api/pets
- 有关更多信息,请访问http://jooby.org/doc/lang-kotlin
- 查看Kotlin入门项目: https : //github.com/jooby-project/kotlin-starter
LiveReload
没有更多的浏览器刷新按钮!
</span>
<pre>import org.jooby.*;
import org.jooby.json.*;
import org.jooby.livereload.*;
...
{
use(new Jackson());
use(new LiveReload());
...
}
LiveReload模块侦听文件更改并自动重新加载浏览器。
- 有关更多信息,请访问http://jooby.org/doc/livereload
跷板模板
Rocker是一种快速,安全和静态类型化的模板引擎:
// views/main.rocker.html
@args (String title, RockerBody content)
<html>
<head>
<title>@title</title>
</head>
<body>
@content
</body>
</html>
// views/index.rocker.html
@args (String message)
@views.main.template("Home") -> {
<h1>Hello @message!</h1>
}
您可以从应用程序中有效地渲染它们:
import org.jooby.rocker.*;
{
use(Rockerby());
get("/", () -> views.index.template("Rocker"));
}
- http://jooby.org/doc/rocker
- 查看Rocker Starter项目: https : //github.com/jooby-project/rocker-starter
重新查询数据库
Requery是一种现代SQL,静态类型的持久性引擎:
import org.jooby.jdbc.*;
import org.jooby.requery.*;
...
{
use(new Jdbc());
use(new Requery(Models.DEFAULT));
get("/people", () -> {
EntityStore store = require(EntityStore.class);
return store.select(Person.class)
.where(Person.ID.eq(req.param("id").intValue()))
.get()
.first();
});
}
- 有关更多信息,请访问http://jooby.org/doc/requery
- 查看Rocker Starter项目: https : //github.com/jooby-project/requery-starter
还有更多
- 现在,我们支持MVC Web套接字: http : //jooby.org/doc/#web-sockets-listener
- 改进的性能。 Jooby现在快了2倍/ 3倍。 https://github.com/networknt/microservices-framework-benchmark
希望你喜欢它!
完整的发行说明可在此处获得: https : //github.com/jooby-project/jooby/releases/tag/v1.1.0
这篇文章最初发表在Medium上 。