异步组件

在现代前端应用中,按需加载是优化加载体验与渲染性能的重要手段。异步组件(Async Component)正是为此而生的一种机制:它允许你在真正需要某个组件时再加载,而不是在初始阶段就将其打包进主应用中。这种方式不仅能有效减少初次加载体积,还能改善资源加载速度,并提升首屏渲染性能;同时也便于配合路由或条件渲染进行更高效的资源管理。在 Qingkuai 中,异步组件通过组合使用 异步处理 相关指令实现,整个过程无需特殊配置,使用方式简洁且具备良好的扩展性。


动态导入

很多构建工具会对 动态导入 的模块进行代码分割优化。对于组件,我们同样可以利用这一点:

qk
<qk:spread
    #await={import("./Component.qk")}
    #then={{default: Component}}
>
    <Component />
</qk:spread>

我们还可以为其添加加载状态,以及加载失败时展示的模板内容:

qk
<div #await={import("./Component.qk")}>
    Loading...
</div>
<qk:spread #then={{default: Component}}>
    <Component />
</qk:spread>
<div #catch>Fail to load Component.qk</div>

异步返回

我们还可以在自定义的异步逻辑中返回组件:

qk
<lang-js>
    import Comp1 from "./Comp1.qk"
    import Comp2 from "./Comp2.qk"

    async function getComponent() {
        return (await isOk()) ? Comp1 : Comp2
    }
</lang-js>

<div
    class="comp-box"
    #await={getComponent()}
    #then={ObtainedComponentModule}
>
    <ObtainedComponentModule.default />
</div>

在github上编辑此页面