1. 概述
Kotlin 是 JetBrains 开发的新一代编程语言,因其简洁性和安全性,在 Android 开发社区中迅速走红,成为 Java 的热门替代方案。
除了在 JVM 上运行外,Kotlin 还支持编译成 JavaScript,实现前后端统一语言开发。本文将重点介绍如何使用 Kotlin 编写运行在 Node.js 环境中的服务端应用。
通过 Kotlin 转译为 JavaScript(Transpiling),我们可以同时面向 JVM 和 JavaScript 平台进行开发,这大大扩展了 Kotlin 的适用范围。
接下来,我们将一步步构建一个基于 Node.js 的 Kotlin 示例项目。
2. Node.js 环境准备
Node.js 是一个轻量、快速、跨平台的 JavaScript 运行时环境,广泛用于服务器和桌面应用程序。
2.1. 安装 Node.js
前往 Node 官网 下载并安装 Node.js。安装完成后会自带 npm 包管理工具。
进入一个空目录,初始化项目:
npm init
按照提示输入以下信息:
name
: kotlin-nodedescription
: Kotlin Node Exampleentry point
: crypto.js
其余字段保持默认即可。该操作会生成 package.json
文件。
接着安装所需的依赖包:
npm install
npm install kotlin --save
npm install express --save
以上命令会在当前目录下安装 kotlin
和 express
模块,供后续使用。
3. 使用 Kotlin 构建 Node.js 应用
本节我们将在 Kotlin 中实现一个简单的加密货币价格查询 API 服务。
3.1. 初始化 Kotlin 项目
我们推荐使用 Gradle 来构建 Kotlin 项目。首先确保已安装 Gradle,可参考 Gradle 官方安装指南。
然后使用 Gradle 的 init 任务初始化项目结构,选择如下配置:
- Project type: basic
- Language: Kotlin
- Build script DSL: Groovy
- Project name: kotlin-node
- Package name: com.baeldung.kotlinjs
初始化后会生成一个 build.gradle
文件,替换其内容如下:
buildscript {
ext.kotlin_version = '1.4.10'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
group 'com.baeldung'
version '1.0-SNAPSHOT'
apply plugin: 'kotlin2js'
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version"
testCompile "org.jetbrains.kotlin:kotlin-test-js:$kotlin_version"
}
compileKotlin2Js.kotlinOptions {
moduleKind = "commonjs"
outputFile = "node/crypto.js"
}
⚠️ 注意两个关键点:
✅ 第一,使用了 kotlin2js
插件来将 Kotlin 编译为 JavaScript。
✅ 第二,设置了 moduleKind = "commonjs"
,以兼容 Node.js 模块系统;并通过 outputFile
指定输出路径为 node/crypto.js
。
⚠️ 请确保 build.gradle
中指定的 Kotlin 版本与 package.json
中的一致。
3.2. 实现 API 接口
创建源码目录 src/main/kotlin
,并在其中建立包路径 com/baeldung/kotlinjs
。
新建文件 CryptoRate.kt
,写入如下代码:
external fun require(module: String): dynamic
fun main(args: Array<String>) {
}
接着引入 express 模块并启动服务监听 3000 端口:
val express = require("express")
val app = express()
app.listen(3000, {
println("Listening on port 3000")
})
最后添加一个 /crypto
接口,返回模拟的加密货币价格数据:
app.get("/crypto", { _, res ->
res.send(generateCryptoRates())
})
data class CryptoCurrency(var name: String, var price: Float)
fun generateCryptoRates(): Array<CryptoCurrency> {
return arrayOf<CryptoCurrency>(
CryptoCurrency("Bitcoin", 90000F),
CryptoCurrency("ETH",1000F),
CryptoCurrency("TRX",10F)
);
}
📌 我们借助了 Node.js 的 Express 框架来快速搭建 RESTful 接口。
4. 启动并测试应用
运行此应用分为两步:先将 Kotlin 编译为 JavaScript,再通过 Node.js 执行。
执行构建命令:
./gradlew build
编译后的 JavaScript 文件将输出到 node/crypto.js
。
然后运行该文件:
node node/crypto.js
此时服务已启动,访问 http://localhost:3000/crypto 可看到如下 JSON 响应:
[
{
"name": "Bitcoin",
"price": 90000
},
{
"name": "ETH",
"price": 1000
},
{
"name": "TRX",
"price": 10
}
]
也可以使用 Postman 或 SoapUI 等工具调用该接口。
5. 小结
本文展示了如何使用 Kotlin 开发 Node.js 应用程序。借助 Kotlin 的 JavaScript 支持能力,我们可以用同一套语言完成前后端开发,提高开发效率。
虽然只是一个简单的 demo,但已经体现了 Kotlin 在多平台开发上的潜力。
完整示例代码可在 GitHub 获取。