前言
Kotlin可以用来开发全栈, 我们所熟悉的各个端几乎都支持(除了鸿蒙)
而我们要开发好KMP项目需要一个好的基础架构,这样不仅代码更清晰,而且能共享更多的代码
正文
它们两端也能共享一些代码,比如接口声明,bean类,基础工具类等
前端和服务端共享
基础工具类
接口声明和类
其中可以放一些前后端通用的bean类,比如接口序列化返回的bean
后端实现:
可以看到后端直接实现了这个接口并重写了这个函数,url,参数和返回值直接就确定了,后续如果有变更后端就可以直接知道(不修改会编译不过去)
该代码也是实现了其接口,然后通过下面这个开源库用ksp自动生成的,这样前端可以什么都不写就有了此接口的声明,并且调用返回值Call的相应执行函数可以通过网络请求获取到后端的响应
开源库:LazyPeopleHttp: Kotlin跨平台的网络请求客户端, 比Retrofit更容易声明
前端共享
几个前端同时依赖 frontEndShared, shared, stdUtil
前端ui和逻辑共享
页面
首先ui共享一般可以使用页面,比如Activity,这里可以参考这篇文章(ui当然就Compose了)
这篇文章使用了页面对应平台的页面,也可以使用文章里desktop页面的方式,自己去管理页面展示,打开和关闭等(比较推荐,可以少很多平台的坑,且代码更通用)
ps:如果需要将页面按照desktop的方式完全自己管理,需要通过class构造出相应的类,而KMP中并没有反射,这时需要使用这个库:VirtualReflection: 解决kotlin跨平台没有反射的问题
键值对存储
不同平台可以桥到不同平台的键值对存储上,比如安卓的sp,但desktop上没有好用的键值对存储,可以使用这个库:SharedPreferencesOfDesktop: 在Windows, Linux, MacOs中方便的存取配置文件
数据库
数据库可以使用这个:ctripcorp/SQLlin: A DSL SQLite library for Kotlin Multiplatform. (github.com)
网络请求
网络请求推荐使用这个,可以更好的共享代码(就如上面的前后端代码共享那样)
Kotlin跨平台的网络请求框架-跨平台的Retrofit_android kotlin 网络框架_李小白lt的博客-CSDN博客
序列化
序列化应该没得选,只能用这个,性能好,但使用稍复杂,支持json,Protobuf等多种结构
Kotlin/kotlinx.serialization: Kotlin multiplatform / multi-format serialization (github.com)
图片加载
qdsfdhvh/compose-imageloader: Compose Image library for Kotlin Multiplatform. (github.com)
资源管理
可以参考这篇文章:KMP中的资源处理(字符串,图片等)-CSDN博客
BuildConfig
KMP中的BuildConfig_李小白lt的博客-CSDN博客
导航
其它
说实话KMP目前生态还很缺,很多东西没有一个好用的库,所以有能力可以补充下,后续如果我找到更好用的就随时修改文章
对Kotlin或KMP感兴趣的同学可以进Q群 101786950
如果这篇文章对您有帮助的话
可以扫码请我喝瓶饮料或咖啡(如果对什么比较感兴趣可以在备注里写出来)
原文地址:https://blog.csdn.net/qq_33505109/article/details/134696748
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_22086.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!