diff --git a/Learning/全栈KMP.md b/Learning/全栈KMP.md index cd16bff..50085ec 100644 --- a/Learning/全栈KMP.md +++ b/Learning/全栈KMP.md @@ -2,25 +2,36 @@ **全栈**指:同时完成后端服务器的部分和前端用户的部分。 +因而,在学习本节之前,最好先看 [Kotlin Ktor](./Kotlin-Ktor.md) 或 [Kotlin Springboot](./Kotlin-Springboot.md) 的其中一个。如果你想使用 KMP 最全面的功能,最好是选择 Ktor。 + ## 一个完整的 KMP 项目 -目前(20261009),完整的 KMP 项目包含以下几项: -- Android -- JVM -- iOS -- WASM +目前(2026.10.09),完整的 KMP 项目包含以下几项: +- app + - androidApp + - jvmApp + - iosApp + - webApp + - shared + - commonMain +- core + - commonMain - Server -除了 iOS 部分必须由 Xcode 做额外设置后编译以外,其他的应用均可在 JDK 下完成编译。 +除了 iOS 部分必须由 Xcode 做额外设置后编译以外,其他的应用均可在 JDK 下完成编译(Android 需要相应 SDK,其他需要编译为字节码的需要其他编译器)。 -Server 本身也是运行在 JVM 上面的,它和普通的 Java / Kotlin 后端项目基本没有区别。不过,在 KMP 中,将它的部分代码写在 commonMain 中,可以在一定程度上减少代码的出错可能,还可以进行代码复用。 +Server 本身也是运行在 JVM 上面的,它和普通的 Java / Kotlin 后端项目基本没有区别,除非使用特殊的 Ktor 后端编译为字节码。不过,在 KMP 中,将它的部分代码写在 commonMain 中,可以在一定程度上减少代码的出错可能,还可以进行代码复用。 -我们在编写全栈 KMP 时,应当优先考虑 WASM 和 Server 能否完美运行。 +我们在编写全栈 KMP 时,应当优先考虑 Web(WASM) 和 Server 端能否完美运行。 + +`core` 的依赖关系在 `shared` 之上;`server` 与整个 `app` 模块平级,在 `core` 之下;`app` 内部模块在 `shared` 之下。 + +## 整体的设计思路 + +既然 KMP 最大的特点是多平台代码共享,那么这里就要考虑到把 后端的 entity(vo, dto),网络接口(如果后端框架支持拆开写的话)等一并写在共享代码的部分,即 `core/commonMain` 内部。 ## 接下来可以看 [目录](../README.md) -[下一篇:复杂逻辑与多平台不同逻辑](./复杂逻辑与多平台不同逻辑.md) - -[下一篇:编写服务器应用 —— SpringBoot](./Kotlin-Springboot.md) \ No newline at end of file +[下一篇:复杂逻辑与多平台不同逻辑](./复杂逻辑与多平台不同逻辑.md) \ No newline at end of file