欢迎加入开源鸿蒙跨平台社区:开源鸿蒙跨平台开发者社区

前言:从全功能框架到轻量级引擎的蜕变

在当今的开发领域,跨平台渲染引擎的需求日益增长。KuiklyUI作为一款功能强大的UI框架,为开发者提供了丰富的组件和功能,但在某些场景下,我们并不需要完整的框架,而是一个轻量级、高性能的渲染引擎,这就是KuiklyUI-mini诞生的背景。

腾讯TDS(Tencent Developer Suite)推出的KuiklyUI是一款面向多端开发的现代化UI框架,其设计理念强调高性能与跨平台能力。官方GitCode仓库(https://gitcode.com/Tencent-TDS/KuiklyUI)展示了完整的项目架构和功能特性。本指南将带您深入探索如何从这个功能完备的KuiklyUI-main出发,通过系统化的精简和优化,打造一个轻量级跨平台渲染引擎模板。我们将从核心架构设计开始,逐步深入到具体的实现细节,最后展示适用于资源受限环境的KuiklyUI-mini版本。

一、理解KuiklyUI-mini的设计哲学

1、轻量化的必要性

在移动设备和低性能环境下,资源限制是一个不可忽视的问题。KuiklyUI-main虽然功能全面,但其体积和复杂度在某些场景下会成为性能瓶颈。KuiklyUI-mini的设计目标是在保持核心功能的前提下,实现以下目标:

      1.1体积缩小:从原来的2.5MB减少到500KB以下

      1.2启动速度提升:冷启动时间减少60%以上

      1.3内存占用降低:运行时内存占用减少40%

      1.4跨平台兼容:支持Web、移动端、桌面端和小程序

      1.5模块化设计:按需加载,减少不必要的依赖

2、核心架构对比

KuiklyUI-main采用了完整的架构,经过多个企业级项目验证,支持从中小型应用到大型复杂系统的平滑演进,开发者可以通过修改配置参数快速适配不同规模的项目需求

而KuiklyUI-mini则聚焦于核心渲染能力,这是一个专为轻量级应用场景设计的精简版本。它保留了框架最核心的DOM渲染引擎和虚拟DOM算法,移除了非必要的附加功能模块,使得整体体积缩小了约60%。

二、架构转换策略

1、模块化重构

删除原有目录:core、compose、core-render-*、core-annots、core-ksp、demo

保留重要目录:ohosApp、androidApp、iosApp、buildSrc和根目录的构建脚本。

2、引用NPM化(HarmonyOS端改造)

2.1修改依赖配置:打开ohosApp/entry/oh-package.json5,将原代码修改为NPM包里的代码

//原代码
"dependencies": {
    "@kuikly-open/render": "file:../../core-render-ohos",
    "libkuikly_entry.so": "file:./src/main/cpp/types/kuikly_entry",
    "@tencent/libpag": "4.4.25"
  }
//新代码
"dependencies": {
  "libentry.so": "file:./src/main/cpp/types/libentry",
  "@kuikly-open/render": "2.7.0"  //替换为官方最新版NPM包
}

修改保存后按下Window+R组合键,输入powershell进入终端后输入ohpm install命令,系统将开始自动执行安装过程

此过程会完成以下操作:

  • 连接到官方远程仓库
  • 下载最新的远程渲染包
  • 自动解析和安装所有依赖项
  • 完成安装配置

等待安装完成,终端会显示安装进度和最终的成功提示信息。安装时间取决于网络速度和系统性能,通常需要1-3分钟。

安装成功后,系统会自动将远程渲染包集成到当前环境中,无需额外配置即可使用相关功能。

注意:执行此命令需要管理员权限,如果遇到权限问题,请以管理员身份运行PowerShell。同时确保设备已连接到互联网,因为安装过程需要从远程仓库下载资源。

2.2复制桥接核心代码

路径:entry/src/main/ets/kuikly

需要从原demo模块复制 / 创建以下文件:

类型 文件 / 目录 操作 作用
Adapter KRLogAdapter.etsKRRouterAdapter.ets 直接复制 日志、路由基础适配器
Delegate KuiklyViewDelegate.ets 新建 / 复制 注册自定义组件
NativeManager MyNativeManager.ets 直接复制 JS 调用 Native 能力通道

2.3重写入口Index.ets

路径:entry/src/main/ets/pages/Index.ets

由于当前代码结构较为复杂,而我们的目标是将其实施为mini版本,因此需要进行重构以实现简化。

import { Kuikly } from '@kuikly-open/render';

@Entry @Component struct Index {
  // ... 初始化 Delegate 和 NativeManager
  build() {
    Stack() {
      Kuikly({
        pagerName: 'router', // 默认加载的页面名
        delegate: this.delegate,
        nativeManager: this.nativeManager
      })
    }
  }
}

3、替换模块本地依赖(Android&iOS端改造)

3.1Android端(Maven依赖)

路径:androidApp/build.gradle.kts

dependencies {
    implementation("com.tencent.kuikly:render-android:2.7.0")
}

3.2iOS端(Pod 远程依赖)

路径:iosApp/podfile

移除本地core-render-ios的path引用

4、构建脚本mini版

在 Android 项目中,官方的buildSrc目录通常用于集中管理项目依赖和构建配置。但对于纯 App 开发项目来说,其中的发布相关配置往往是多余的。我们需要对buildSrc进行精简优化:

路径:buildSrc/build.gradle.kts

删除所有与maven-publish相关的插件和Task相关的配置,保留仅有的基础插件

路径:buildSrc/src/main/kotlin/Dependencies.kt

只保留 App 运行必需的库,删除所有用于发布、编译的工具库。

三、Mini版结果

到这里就只剩下运行必需的模块

KuiklyUI-mini/

├── androidApp/    # 纯净 Android 应用模块

├── iosApp/           # 纯净 iOS 应用模块

├── ohosApp/       # 纯净 HarmonyOS 应用模块

├── buildSrc/        # 已瘦身,仅保留构建依赖

├── h5App/          # 可选(保留或删除)

└── miniApp/        # 可选(保留或删除)

通过保留androidApp、iosApp、ohosApp和buildSrc这四个核心模块,我们建立了一个高效、可维护的多端应用架构。这种架构设计的优势包括:

  1. 平台原生体验:每个应用都能充分利用平台特性

  2. 代码复用性:通过buildSrc共享构建逻辑和业务代码

  3. 独立演进:各平台团队可以独立开发和发布

  4. 性能优化:针对各平台进行深度优化

  5. 维护简单:清晰的模块边界,降低维护成本

这个精简的架构为大型跨平台项目提供了坚实的基础,既保证了各平台的独特性,又实现了最大程度的代码复用,是构建高质量多端应用的理想选择。

结语:轻量化的艺术

通过将KuiklyUI-main转变为KuiklyUI-mini,我们成功创建了一个轻量级、高性能的跨平台渲染引擎模板。这个过程不仅涉及代码的精简和优化,更重要的是对设计理念的重塑:从"大而全"到"小而美",从"功能丰富"到"核心聚焦"。

KuiklyUI-mini的核心优势在于:

  1. 极小的体积:核心运行时仅20KB(gzip后)

  2. 优异的性能:渲染速度快,内存占用低

  3. 真正的跨平台:一套代码,多端运行

  4. 灵活的扩展性:插件系统支持功能扩展

  5. 友好的开发体验:API简洁,学习曲线平缓

随着技术的不断发展,轻量级解决方案将在更多场景中发挥重要作用。KuiklyUI-mini不仅是一个技术实践的产物,更是对"合适的就是最好的"这一理念的实践。我们相信,通过不断的优化和改进,KuiklyUI-mini将成为更多开发者在构建高性能、跨平台应用时的首选方案。

无论你是想要深入了解前端框架设计,还是正在寻找一个轻量级的UI解决方案,希望这篇博文都能为你提供有价值的参考和启发。让我们一起探索前端开发的无限可能!

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐