跳到正文

Quantum用声明式页面构建 Web 应用

数据库、表单、会话和 AI 都在语言之中。无需构建工具链,无需 JavaScript,无需前端框架。

机器翻译

本页由英文原文机器翻译而来,尚未经过母语审校,欢迎在 GitHub 上提出修改。内容如有出入,以英文原文为准。目前大部分文档仍为英文。

欢迎使用 Quantum ​

Quantum 用声明式的 XML 页面构建 Web 应用——同一个页面也能在终端和桌面窗口中运行。它受 ColdFusion 和 Adobe Flex 启发,让你无需编写 JavaScript 就能构建内部工具、仪表盘和 AI 应用。为什么选择 Quantum?

快速示例 ​

一个页面:从数据库列出笔记,并通过表单添加一条——字段的规则、插入操作以及之后的提示消息都包含在内:

xml
<q:component name="Notes">
  <q:action name="add" method="POST">
    <q:param name="title" required="true" minlength="3" />
    <q:query name="added" datasource="db">
      INSERT INTO notes (title) VALUES (:title)
      <q:param name="title" value="{title}" type="string" />
    </q:query>
    <q:redirect url="/" flash="Added: {title}" />
  </q:action>

  <q:query name="notes" datasource="db">SELECT title FROM notes ORDER BY id</q:query>

  <h1>Notes ({notes_result.recordCount})</h1>
  <q:if condition="flash"><p class="flash">{flash}</p></q:if>
  <form method="POST" action="/?action=add">
    <input name="title" />
    <button>Add</button>
  </form>
  <ul>
    <q:loop query="notes"><li>{notes.title}</li></q:loop>
  </ul>
</q:component>

这个页面及其测试在每次变更时都会运行——参见示例 A first test with quantum test(英文)。

主要特性 ​

语言核心 ​

  • 组件:可复用的 .q 文件,带参数和返回值
  • 状态管理:用 q:set 定义变量,支持校验和类型检查
  • 循环:用 q:loop 遍历范围、数组、列表和查询结果
  • 条件:完整的 q:if/q:elseif/q:else
  • 函数:用 q:function 定义可复用的逻辑

界面(ui:*) ​

  • 一组核心组件:窗口、盒子、面板、表格、列表、表单和字段(UI)
  • 三种渲染器:浏览器、终端和桌面窗口,来自同一个页面
  • 来自动作的表单:字段、规则和错误都来自动作的 q:param
  • 来自查询的表格:分页、边输入边搜索、可排序和可编辑的单元格

后端功能 ​

  • 数据库查询:带参数的 SQL、数据表结构计划、变更历史、quantum check
  • 认证:会话管理和基于角色的访问控制
  • 数据导入:JSON、CSV 和 XML 数据源
  • 文件和邮件:上传、受保护的下载和 q:mail(指南)
  • AI:带来源和流式输出的 q:llm、q:knowledge、q:agent(指南)

理念 ​

简单胜于配置

Quantum 优先考虑可读性和易用性。如果你会 XML 和 SQL,就能构建完整的应用。

开始使用 ​

bash
pip install quantum-framework
quantum start          # in an application folder; the guide builds one step by step

阅读快速入门指南

MIT 许可证 · 使用 VitePress 构建