🎯
一个页面,从上到下
守卫、动作、查询和界面,按运行的顺序写在一起。无需编写 JavaScript。
数据库、表单、会话和 AI 都在语言之中。无需构建工具链,无需 JavaScript,无需前端框架。
机器翻译
本页由英文原文机器翻译而来,尚未经过母语审校,欢迎在 GitHub 上提出修改。内容如有出入,以英文原文为准。目前大部分文档仍为英文。
Quantum 用声明式的 XML 页面构建 Web 应用——同一个页面也能在终端和桌面窗口中运行。它受 ColdFusion 和 Adobe Flex 启发,让你无需编写 JavaScript 就能构建内部工具、仪表盘和 AI 应用。为什么选择 Quantum?
一个页面:从数据库列出笔记,并通过表单添加一条——字段的规则、插入操作以及之后的提示消息都包含在内:
<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:elseq:function 定义可复用的逻辑ui:*) q:paramquantum checkq:mail(指南)q:llm、q:knowledge、q:agent(指南)简单胜于配置
Quantum 优先考虑可读性和易用性。如果你会 XML 和 SQL,就能构建完整的应用。
pip install quantum-framework
quantum start # in an application folder; the guide builds one step by step