You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin Compose for Web中使用Clarity Design System(CDS)Web组件

解决方案:在Kotlin Compose for Web中使用Clarity Design System(CDS)组件

1. 配置npm依赖

在项目的build.gradle.kts(Kotlin DSL)文件中,给jsMain源集添加CDS的npm依赖:

kotlin {
    sourceSets {
        val jsMain by getting {
            dependencies {
                implementation(npm("@cds/core", "你需要的CDS稳定版本号"))
                implementation(npm("@cds/city", "你需要的CDS稳定版本号"))
            }
        }
    }
}

2. 导入全局样式

两种可选方式:

  • 如果你使用自定义HTML入口文件,在<head>标签中添加样式引入:
<link rel="stylesheet" href="./node_modules/@cds/core/global.min.css">
<link rel="stylesheet" href="./node_modules/@cds/city/css/bundles/default.min.css">
  • 如果你使用Sass预处理全局样式,在全局scss文件顶部添加导入:
@import "@cds/core/global.min";
@import "@cds/city/css/bundles/default.min";

3. 注册CDS组件

在Compose渲染逻辑执行之前,导入需要使用的组件对应的注册文件,注册逻辑建议放在项目入口的最顶部:

import kotlin.js.import

fun main() {
    // 按需注册你需要用到的CDS组件
    import("@cds/core/button/register.js")
    import("@cds/core/input/register.js")
    // 其他组件注册以此类推

    // 后续的Compose渲染逻辑
    renderComposable(rootElementId = "root") {
        // 页面内容
    }
}

4. 封装并使用CDS组件

Compose for Web支持直接调用自定义Web组件,你可以封装对应的Composable函数方便调用:

import org.jetbrains.compose.web.attributes.AttrsScope
import org.jetbrains.compose.web.dom.TagElement
import org.jetbrains.compose.web.dom.Text
import org.w3c.dom.HTMLElement

// 封装cds-button组件
@Composable
fun CdsButton(
    attrs: AttrsScope<HTMLElement>.() -> Unit = {},
    content: @Composable () -> Unit
) {
    TagElement("cds-button", applyAttrs = attrs, content = content)
}

封装完成后即可直接在Compose代码中使用:

// 基础使用
CdsButton {
    Text("Click me!")
}

// 带属性和事件的使用
CdsButton(
    attrs = {
        attr("status", "success")
        attr("size", "lg")
        onClick { 
            println("按钮被点击")
        }
    }
) {
    Text("大号成功按钮")
}

常见注意事项

  • 组件必须完成注册后再渲染,否则会出现组件不显示的问题
  • CDS组件的所有原生属性都可以通过attr()方法设置,事件绑定可以直接使用Compose的on*系列方法
  • 如果需要支持TypeScript类型推导,可以额外添加@types/clarity__core的npm依赖

内容的提问来源于stack exchange,提问作者Endzeit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:18:03