又出新神器,一套代碼適應(yīng)多端!
最近正在考慮開發(fā)一款A(yù)PP,今天就看到一款基于多端的 UI 調(diào)試工具,一套代碼適應(yīng)多端,真的是太棒了,下面分享給大家。
前言
該工具是大名鼎鼎的?JetBrains?公司新推出的,名曰:“Jetpack Compose for Web”,官方介紹稱此項目基于 Google 現(xiàn)代 UI 工具包 Jetpack Compose,支持使用 Kotlin 編寫響應(yīng)式 Web UI。
Jetpack Compose?是用于構(gòu)建原生界面的新款 Android 工具包。它可簡化并加快 Android 上的界面開發(fā)。使用更少的代碼、強大的工具和直觀的 Kotlin API,快速讓應(yīng)用生動而精彩。

據(jù)介紹,Jetpack Compose for Web 可簡化并加速 Web 應(yīng)用的 UI 開發(fā),目標(biāo)是在 Web、桌面和 Android APP 之間實現(xiàn) UI 代碼共享,一套代碼適應(yīng)多端。目前處于技術(shù)預(yù)覽階段。
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 構(gòu)建用戶界面
借助 Compose for Web,開發(fā)者通過使用 Kotlin 并應(yīng)用 Jetpack Compose 的概念和 API 為 Web 構(gòu)建響應(yīng)式用戶界面,以表達(dá)應(yīng)用程序的狀態(tài)、行為和邏輯。
可組合的 DOM API
通過 DOM 元素和 HTML 標(biāo)簽表達(dá)設(shè)計和布局 使用類型安全的 HTML DSL 構(gòu)建 UI 表示形式 通過使用類型安全的 CSS DSL 創(chuàng)建樣式表來完全控制應(yīng)用程序的外觀 通過 DOM 子樹與其他 JavaScript 庫集成
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 機(jī)制來提供特定于平臺的實現(xiàn),從而使用和構(gòu)建可在 Android、桌面和 Web 上運行的 Compose 小部件
處于實驗性階段的一組布局原語 (layout primitives) 和API,這些原語和 API 與 Compose for Desktop/Android 的功能相似
示例代碼
使用 Composable DOM 編寫簡單的計數(shù)器
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()?/*?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!")
????????}
????}
}
--本文完--
最近給大家找了??Java大型分布式網(wǎng)上預(yù)約掛號系統(tǒng)全棧前后端開發(fā)項目
本課程項目是一個網(wǎng)上預(yù)約掛號系統(tǒng),包含后臺管理系統(tǒng)和前臺用戶系統(tǒng),采用前后端分離開發(fā)模式。項目技術(shù)應(yīng)用廣泛,涵蓋微服務(wù)、全棧、集群、分布式、高并發(fā);技術(shù)應(yīng)用場景合理,并非多技術(shù)的盲目堆疊;業(yè)務(wù)場景貼近實際,按照市場需求開發(fā)。項目后端技術(shù)棧,采用主流的SpringBoot+SpringCloud微服務(wù)架構(gòu),全面使用了目前流行的NoSQL技術(shù),使用Redis緩存數(shù)據(jù),使用MongoDB實現(xiàn)高并發(fā)讀寫,整合消息中間件RabbitMQ提高訂單的并發(fā)量,同時還整合了定時任務(wù),實現(xiàn)就醫(yī)提醒功能,綜合應(yīng)用了阿里云OSS,短信服務(wù)以及微信登錄、微信支付,同時增加了微信退款功能。項目前端技術(shù)棧,采用主流前端框架Vue,使用Nuxt和vue-admin-template模板搭建頁面環(huán)境,采用Element-ui進(jìn)行頁面布局,Npm進(jìn)行依賴管理,axios進(jìn)行異步調(diào)用,使用ECharts進(jìn)行圖表顯示,實現(xiàn)全棧開發(fā)。
資源,怎么領(lǐng)取?
掃二維碼,加我微信,回復(fù):掛號系統(tǒng)
一定要備注:掛號系統(tǒng),不要急哦,工作忙完后就通過!
如加不了的話,可以晚點再加哦~
