简介

Qingkuai 取自中文“轻快”的拼音,寓意框架以 量级、 响应与更 轻快 的开发体验为核心。它是一个用于构建 Web 界面与交互功能的框架,提供变量响应化与界面组件化的编程模型,并通过编译器将 .qk 文件源码转换为极简、高效且严格优化的 JavaScript 代码。

在编写组件时,可以将组件脚本写在嵌入语言标签中。这些标签都以 lang- 开头,如 lang-js;标签外部则用于编写 HTML 模板。下面是一个简单的组件示例:

qk
<lang-js>
    let count = 1
    let name = "World"

    setTimeout(() => {
        name = "Qingkuai"
    }, 1000)
</lang-js>

<h1> Hello {name}! </h1>

<button
    class="btn"
    @click={count++}
>
    You have clicked {count} times.
</button>

<lang-scss>
    // 在此为组件中的 HTML 元素添加样式...
</lang-scss>

可用的嵌入语言标签包括:jstscssscsssasslesspostcssstylus。需要注意的是,scriptstyle 标签中的代码不会被编译器处理,其原始内容会被保留并插入页面(即与普通 HTML 中表现一致):

qk
<script>
    // 向 HTML 中插入同样内容的 script 标签
</script>

<style>
    /* 向 HTML 中插入同样内容的 style 标签 */
</style>

语法设计

Qingkuai 的语法设计理念是尽可能少造新语法,优先采用现有主流框架的语法习惯;只有在现有设计存在明显不合理之处时,才会做出必要调整。这一理念旨在最大程度降低学习成本,使开发者能够快速上手并专注于业务本身。

不使用 scriptstyle 作为嵌入语言标签,并不单纯是为了突出框架的个性化,而是出于实际兼容性考虑:当这些标签包含多个属性并换行时,会导致基于 Textmate 的语法高亮失效:

html
<style
    scoped
    lang="scss"
>
    /* 此处不能正确高亮scss */
</style>
如果你使用过 VueSvelte,会发现其模板语法在许多方面与它们相似。这是设计时特意保留的,目的正是降低学习成本。但在语法相似的背后,其设计取舍与工程实现路径仍有一定差异。

为何选择 ​Qingkuai?

与目前流行的前端框架相比,Qingkuai 具有以下核心优势:

@click 的作用是为 button 元素添加点击事件监听器,按钮点击后会执行 count++ 这条 JavaScript 表达式。关于事件监听器等更多模板语法,我们会在后文详细介绍。

在github上编辑此页面