是否可以使用 Kotlin 构建完整的 Node.js Web 应用程序?
Is it possible to build a full Node.js web application using Kotlin?
如果我没理解错的话,用 the release of Kotlin 1.1, we can set JavaScript as a compile target 来完整编译到 JavaScript 的 Kotlin 项目。仅使用 Kotlin 代码编写整个 Node.js 应用程序(例如快速网络服务器)是否可能(或可行)?
正如 所建议的那样,我们可以将 Node 模块导入 Kotlin classes:
external fun require(module: String): dynamic
val express = require('express')
...我似乎可以使用以下方法创建应用程序:
val app = express()
这是设置快速应用程序的 Kotlin 方式吗?或者我应该将 class 声明为 described in the docs:
@JsModule("express")
external class Express { ... }
为 Node.js 应用程序开发设置 Kotlin 项目的规范方法是什么? Kotlin 的 JavaScript 互操作性是否足够强大以继续沿着这条路走下去,还是会比它的价值更麻烦?
从技术上讲,是的,前提是 Kotlin 声称:
You can use Kotlin to interact with server-side JavaScript such as node.js
是正确的,并且 Kotlin -> JS 的转译足够可靠,能够预测出什么 JS,那么你 可以 在 Kotlin 中编写一个 Node 应用程序,就像您可以用 TypeScript 编写它们一样。
就我个人而言,我怀疑您会发现它很困难、有问题并且缺乏支持,但它可能是一个很好的学术练习……也许吧。
是的,有可能https://kotlinlang.org/docs/reference/js-project-setup.html
但是,NIO 是使用 NodeJS 而不是任何语言来构建后端解决方案的最大原因。现在,有了 Reactive First class 支持,您可以拥有像 Kotlin + Spring Reactive + Coroutines + R2DBC 这样的堆栈,并构建一个简单的微服务或任何完整的企业解决方案。
如果我没理解错的话,用 the release of Kotlin 1.1, we can set JavaScript as a compile target 来完整编译到 JavaScript 的 Kotlin 项目。仅使用 Kotlin 代码编写整个 Node.js 应用程序(例如快速网络服务器)是否可能(或可行)?
正如
external fun require(module: String): dynamic
val express = require('express')
...我似乎可以使用以下方法创建应用程序:
val app = express()
这是设置快速应用程序的 Kotlin 方式吗?或者我应该将 class 声明为 described in the docs:
@JsModule("express")
external class Express { ... }
为 Node.js 应用程序开发设置 Kotlin 项目的规范方法是什么? Kotlin 的 JavaScript 互操作性是否足够强大以继续沿着这条路走下去,还是会比它的价值更麻烦?
从技术上讲,是的,前提是 Kotlin 声称:
You can use Kotlin to interact with server-side JavaScript such as node.js
是正确的,并且 Kotlin -> JS 的转译足够可靠,能够预测出什么 JS,那么你 可以 在 Kotlin 中编写一个 Node 应用程序,就像您可以用 TypeScript 编写它们一样。
就我个人而言,我怀疑您会发现它很困难、有问题并且缺乏支持,但它可能是一个很好的学术练习……也许吧。
是的,有可能https://kotlinlang.org/docs/reference/js-project-setup.html
但是,NIO 是使用 NodeJS 而不是任何语言来构建后端解决方案的最大原因。现在,有了 Reactive First class 支持,您可以拥有像 Kotlin + Spring Reactive + Coroutines + R2DBC 这样的堆栈,并构建一个简单的微服务或任何完整的企业解决方案。