记录一下使用Compose multiplatform for web的使用

AI智能摘要
作者在了解他人使用 Compose Multiplatform 开发项目后,尝试用该技术构建单页 Web 应用。该方案基于 WASM 实现 UI 渲染,虽能通过 Kotlin 单语言开发并复用多平台代码,但生成的 UI 无法文本复制,且输出体积庞大,一个简单页面可达约 30MB。尽管 DSL 编写体验流畅,但编译速度极慢,重启耗时约 30 秒,同时 Kotlin/JS 生态库支持有限,影响开发效率。
— AI 生成的文章内容摘要

起因

就是看到别人自己写了个项目模板生成器, 然后问了一下那个人说是compose写的我才恍然大悟,我怎么没想到 compose还有compose multiplatform呢, 然后我就动手开始写一个单页Web程序。

使用

compose multiplatform for web是依靠wasm来实现的, 虽然能在浏览器内渲染出美观的ui,但是本质上并不是一个html+css+js的实现而是靠canvas绘制出的ui,所以这些绘制出的文字并不能被复制。

compose multiplatform for web也是kmp的一部分所以需要引入kotlin multiplatform 的gradle插件,我直接就在jetbrains官方文档中找到了一个空的示例项目, 然后将其作为子模块引入,compose multiplatform能在多个平台共用一套代码是很舒服但是缺点就是体积膨胀很严重, 一个几百行的kt文件编译出的页面大约会膨胀到30mb上下, 其中最大的就是wasm的模块。

使用感受

使用dsl的方式写ui很舒服,并且在完全使用Kotlin来编写,不用切换到其他的IDE进行编码,这点我很喜欢。

缺点

  1. 使用 compose web就得和kotlin/js kotlin/wasm一起使用, kotlin/js的库不算太多,但是基本是能实现一些简单的功能的。

  2. 编译的速度实在是太慢了, 重新启动一次都得30秒左右才能启动, 这点我个人感觉十分难受

温馨提示:

1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:xiaoman1221@yhdzz.cn,工作室将第一时间处理!

2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。

3.所有资源仅限于参考和学习,版权归原作者所有。

Kotlin

Kotlin基础教程

2025-1-15 20:20:23

Kotlin学习默认

记录一下在Kotlin Native上嵌入资源的插件开发过程

2025-4-16 22:00:57

18 条回复 A文章作者 M管理员
  1. 破晓之剑

    求问这个编译出来的wasm能gzip压缩吗?能压到多少?

  2. 灵藤

    哈哈,又一个掉进KMP坑的,欢迎入伙!

  3. 原子钟表匠

    感觉还行,就是不知道实际用起来会不会卡。

  4. 泡泡小星星

    wasm体积这么大,做移动端网页加载估计够呛,流量和速度都是问题🤔

  5. 社恐小树苗

    我之前也想过用Kotlin写前端,就是怕生态跟不上,看来还得观望下。

  6. 星河漫行

    那如果是做仪表盘这种内部应用呢?对加载速度要求没那么高应该能用吧?

  7. 月下影

    老用户表示,KMP配置折腾一次后面就舒服了,新手建议直接找个现成模板。

  8. 编译慢是真的,每次改点东西都得等半天,开发体验打折扣了。

  9. 蹲一个后续,如果优化了体积和编译速度求踢!

  10. 牛皮日记

    感觉用来做内部工具或者对体验要求高的后台还行。

  11. 虚空织者

    30MB…这加载得等半天吧,用户怕不是直接关了。

  12. 红枫似火

    老哥能分享一下那个空项目的链接吗?找起来有点费劲。

  13. LunarSerenade

    这文字不能复制?那实用性打折扣了啊,只能自己看。

  14. 之前也想试试,看到要搞KMP配置就头大,放弃了。

  15. 瑶光圣后

    用kotlin写前端不用切IDE这点确实爽,就是生态还是弱了点。

  16. wasm体积这么大吗?那做移动端web是不是不太合适?

  17. 晨露晞

    编译要30秒确实有点劝退,我连10秒都等不了。

  18. 露营笔记

    第一次听说compose还能这么玩,有点意思啊。

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索