上一篇:滴滴程序员被亲戚鄙视:年薪八十万不如二本教书的……

看到一款基于多端的 UI 调试工具,一套代码适应多端,真的是太棒了,下面分享给大家。

前言

该工具是大名鼎鼎的 JetBrains 公司新推出的,名曰:“Jetpack Compose for Web”,官方介绍称此项目基于 Google 现代 UI 工具包 Jetpack Compose,支持使用 Kotlin 编写响应式 Web UI。

Jetpack Compose 是用于构建原生界面的新款 Android 工具包。它可简化并加快 Android 上的界面开发。使用更少的代码、强大的工具和直观的 Kotlin API,快速让应用生动而精彩。

UI 代码和预览如下图所示:

据介绍,Jetpack Compose for Web 可简化并加速 Web 应用的 UI 开发,目标是在 Web、桌面和 Android APP 之间实现 UI 代码共享,一套代码适应多端。目前处于技术预览阶段。

fun greet() = listOf("Hello", "Hallo", "Hola", "Servus").random()renderComposable("greetingContainer") {var greeting by remember { mutableStateOf(greet()) }Button(attrs = { onClick { greeting = greet() } }) {Text(greeting)}
}
Result: Servus

使用 Compose for Web 构建用户界面

借助 Compose for Web,开发者通过使用 Kotlin 并应用 Jetpack Compose 的概念和 API 为 Web 构建响应式用户界面,以表达应用程序的状态、行为和逻辑。

可组合的 DOM API

  • 通过 DOM 元素和 HTML 标签表达设计和布局

  • 使用类型安全的 HTML DSL 构建 UI 表示形式

  • 通过使用类型安全的 CSS DSL 创建样式表来完全控制应用程序的外观

  • 通过 DOM 子树与其他 JavaScript 库集成

  • 关注公众号互联网架构师,在后台回复:2T,获取全套架构资料,非常齐全。

fun main() {renderComposable("root") {var platform by remember { mutableStateOf("a platform") }P {Text("Welcome to Compose for $platform! ")Button(attrs = { onClick { platform = "Web" } }) {Text("...for what?")}}A("https://www.jetbrains.com/lp/compose-web") {Text("Learn more!")}}
}

具有 Web 支持的多平台小部件

  • 通过利用 Kotlin 的 Expect-actual 机制来提供特定于平台的实现,从而使用和构建可在 Android、桌面和 Web 上运行的 Compose 小部件

  • 处于实验性阶段的一组布局原语 (layout primitives) 和API,这些原语和 API 与 Compose for Desktop/Android 的功能相似

示例代码

使用 Composable DOM 编写简单的计数器

fun main() {val count = mutableStateOf(0)renderComposable(rootElementId = "root") {Button(attrs = {onClick { count.value = count.value - 1 }}) {Text("-")}Span(style = { padding(15.px) }) { /* we use inline style here */Text("${count.value}")}Button(attrs = {onClick { count.value = count.value + 1 }}) {Text("+")}}
}

声明和使用样式表

object MyStyleSheet : StyleSheet() {val container by style { /* define a class `container` */border(1.px, LineStyle.Solid, Color.RGB(255, 0, 0))}
}@Composable
fun MyComponent() {Div(attrs = {classes(MyStyleSheet.container) /* use `container` class */}) {Text("Hello world!")}
}fun main() {renderComposable(rootElementId = "root") {Style(MyStyleSheet) /* mount the stylesheet */MyComponent()}
}

声明和使用 CSS 变量

object MyVariables : CSSVariables {val contentBackgroundColor by variable<Color>() /* declare a variable */
}object MyStyleSheet: StyleSheet() {val container by style {MyVariables.contentBackgroundColor(Color("blue")) /* set its value */}val content by style {backgroundColor(MyVariables.contentBackgroundColor.value()) /* use it */}
}@Composable
fun MyComponent() {Div(attrs = {classes(MyStyleSheet.container)}) {Span(attrs = {classes(MyStyleSheet.content)}) {Text("Hello world!")}}
}

来源:https://mp.weixin.qq.com/s/8iabDTcw99kEa4i52w-XCQ

感谢您的阅读,也欢迎您发表关于这篇文章的任何建议,关注我,技术不迷茫!小编到你上高速。

· END ·

最后,关注公众号互联网架构师,在后台回复:2T,可以获取我整理的 Java 系列面试题和答案,非常齐全。

正文结束

推荐阅读 ↓↓↓

1.心态崩了!税前2万4,到手1万4,年终奖扣税方式1月1日起施行~

2.深圳一普通中学老师工资单曝光,秒杀程序员,网友:敢问是哪个学校毕业的?

3.从零开始搭建创业公司后台技术栈

4.程序员一般可以从什么平台接私活?

5.清华大学:2021 元宇宙研究报告!

6.为什么国内 996 干不过国外的 955呢?

7.这封“领导痛批95后下属”的邮件,句句扎心!

8.15张图看懂瞎忙和高效的区别!

JetBrains 又出了一款新神器,一套代码适应多端!相关推荐

  1. 牛逼!JetBrains 又出了一款编程神器!协同编程!

    1 前言 我很喜欢一些在线协同编辑的文档工具:创建一个文档,把链接分享出去, 别人打开就可以直接编辑. 这时候我会观察到别人在文档中的行为:输入文字.删除文字,当然我的行为也可以被别人实时看到--这种 ...

  2. JetBrains打造的开发神器,一套代码适应多端!

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:程序员编程 最近正在考虑开发一款APP,今天就看到一款基于多端的 UI 调试工具,一套代码适应多端,真的是太棒了,下面分享给大 ...

  3. IDEA 又出新神器,一套代码适应多端!

    点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | ...

  4. 微信又出了一款新的APP

    昨天无意中发现微信出了一款名叫"微信听书"的产品,翻开其版本迭代记录,发现6个月前才上线,虽然我已经是一个30岁的老汉了,但好奇心这个产品经理的宝贵素质,我还没丢,于是下载下来体验 ...

  5. 为了在元宇宙里摸到东西,扎克伯格整出了一款新电子皮肤,成本6美元

    丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 未来的元宇宙会有触觉交互? 这不,扎克伯格刚刚宣布Facebook更名为Meta没两天,又"趁热打铁"地宣传起一款机器人 ...

  6. 字节出了一款设计神器,居然这么好用。外包又有icon、插画素材了

    字节发布了一个图标和插画的素材资源库 IconPark,不知道大家用过没? 之前国内用得最多的,是阿里的 iconfont,各种图标和插画很多,但大多是用户分享的. 因为这种免费的设计资源库不少,所以 ...

  7. 查阅arXiv论文新神器,一行代码比较版本差别,Github新开源!

    贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 在arXiv上发现了一篇中意的论文,当然是下载保存慢慢研究! 然而,等你好不容易看完了文章,发现作者又上传了V2.V3,一眼望去却看不出差 ...

  8. 查阅 arXiv 论文新神器,一行代码比较版本差别,Github 新开源!

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作分享,不代表本公众号立场,侵权联系删除 转载于:量子位 AI博士笔记系列推荐 周志华<机器学习>手推 ...

  9. 学会这个大屏神器,低代码开发高端可视化大屏不在话下

    文末有福利,你不会失望的 随着企业数字化建设的迅速发展,各行各业都开始注重数据的价值,数据分析和可视化展现的需求日益增长.对于管理层来说,可视化大屏尤其受欢迎和重视. 一方面大屏项目能够全面展示业务数 ...

最新文章

  1. react native基本调试技巧
  2. 面试官绝杀:系统是如何支撑高并发的?
  3. ABAP Write 宝典
  4. 没想到你是这样的直播研发骚年
  5. JPA查找数据库最新一条消息
  6. 【渝粤题库】国家开放大学2021春2320物流管理定量分析方法题目
  7. [转载] Spring面试题整理
  8. c语言中转义字符有什么作用,C语言中转义字符有什么作用?
  9. 建议 | 在中国不是程序猿,不建议你用序列化!
  10. Android dialog中显示一个超链接
  11. 如何使用Omni Remover Mac版释放Mac上的空间
  12. 红外夜视摄像头 蒂卡尔K-TF使用手记 2
  13. 状态空间离散化matlab,状态空间方程离散化的matlab处理
  14. 极限精简服务器系统,极限精简斐讯T1/N1 极客开发者强迫症福音6.25
  15. JAVA输出希腊字母表
  16. 武汉社保公积金常用信息汇总
  17. Linux学习(完整)
  18. 【SwiftUI模块】0012、SwiftUI-搭建一个类似微博、网易云、抖音个人页面的头部下拉放大图片效果
  19. CSS精灵图代码示例
  20. 文件File 的使用

热门文章

  1. 华山论剑,B2C网站系统大比拼
  2. AI实践之路:朴素贝叶斯
  3. Totam animi repellendus consequuntur ad.Deserunt temporibMous nulla soluta distinctio voluptas esse.
  4. 【Flink源码分析】Flink 命令启动全流程
  5. c语言177转换成八进制,C语言项目设计——进制转换
  6. 系统延迟任务及定时任务
  7. P3084 [USACO13OPEN]照片Photo
  8. 今天情人节,程序员该如何绝地反击?
  9. 阿里云服务器搭建frp -实现内网穿透
  10. 怎么输出链表最后一个元素_听说AI将是人类最后一个发明?听听他怎么说!