变量与参数
在数据模型与流转中,我们了解到变量和参数承担着应用运行过程中的“内存”角色。如果说数据库是应用长期保存记忆的“硬盘”,那么变量与参数就是应用在运行过程中进行瞬时计算、跨边界传递信息的“内存”。
要构建高内聚、低耦合的应用架构,必须从本质上区分两者的心智模型:
- 变量:用于**“存储”状态。关注的是数据的生命周期和作用域**。
- 参数:用于**“传递”信息。关注的是跨越物理/逻辑边界时的输入与输出契约**。
1. 变量 —— 状态的存储与复用
变量用于在特定的运行范围内,存储、更新和复用临时性的状态或数据。根据作用范围的不同,Zion 中的变量分为三个层级:
1.1 客户端变量
- 作用域:全局跨页面生效。只要当前用户未关闭或退出应用,客户端变量的值在所有页面中均可以被直接读取或修改。
- 生命周期:伴随整个应用会话。在应用打开时初始化,并在用户关闭应用或刷新页面(网页端)时重置。
- 典型场景:存储全局应用配置、当前登录用户的基本信息缓存、跨多个页面的购物车草稿。
1.2 页面变量
- 作用域:仅限当前单页面生效。只能在创建该变量的单页面内部组件中被引用或修改。
- 生命周期:伴随页面生命周期。进入页面时初始化,离开该页面时自动销毁并释放内存。
- 典型场景:表单输入的暂存、控制当前页面内弹窗/抽屉的显隐状态(布尔值)、页面内的临时检索关键字。
1.3 行为流变量 (局部变量)
- 作用域:仅限当前行为流运行期间生效。
- 生命周期:伴随逻辑流的执行。行为流开始时初始化,运行结束时立即物理销毁。
- 典型场景:在复杂的后台业务流中暂存中间计算结果。例如在“循环节点”中不断累加总金额,或在发起 API 请求前拼接并暂存一段文本。
2. 参数 —— 跨边界的信息传递
参数不用于“存储”长期状态,而是作为信息通道,专门用于在两个具有隔离边界的模块之间传递数据。无论是页面、组件,还是 API、AI 和行为流,它们都遵循统一的输入与输出契约模型。
2.1 路由与页面参数(跨页面边界)
当进行页面跳转时,通过 URL 传递参数是标准的跨页面通信方式:
- 路径参数:直接作为网址路由的一部分(如
/product/:id)。它是结构化且必填的,决定了页面的核心内容。极度利于搜索引擎优化(SEO),常用于详情页。 - 查询参数:附加在网址末尾的键值对(如
?source=qr&page=2)。它是非结构化且选填的,不改变核心路由。常用于渠道追踪、分页、筛选条件传递。
💡
URL 结构解析示例:
以 https://www.functorz.com/blog_article/blog/zion-ai?utm_source=zion_doc 为例:
- 域名路径:
https://www.functorz.com/blog_article/blog/(页面的基础地址) - 路径参数:
zion-ai(改变了路由的层级,必须提供,用于定位具体的文章详情) - 查询参数:
?utm_source=zion_doc(临时性附加,不影响页面核心路由,用于渠道跟踪)
2.2 自定义组件参数(跨 UI 组件边界)
当您将一组 UI 封装为“自定义组件”时,它就形成了一个独立的黑盒,需要通过参数与外部页面通信:
- 属性与输入参数:外部父页面向内部子组件传递数据(如向“商品卡片”组件传入
商品图片和商品价格)。 - 事件与输出参数:内部子组件向外部父页面抛出动作及携带的数据(如卡片内部的“加入购物车”按钮被点击时,向外抛出
当前商品ID)。
2.3 逻辑处理参数(跨系统/逻辑边界)
无论是行为流、外部 API 还是 AI Agent,它们在本质上都是“接收指令 -> 处理计算 -> 返回结果”的黑盒。它们统一遵循以下参数模型:
- 输入参数:外部调用方(如按钮点击事件)必须提供的前置数据。例如,调用支付 API 需要传入
订单号和金额;调用 AI 节点需要传入提示词文本;调用创建订单的行为流需要传入商品列表。 - 输出参数:黑盒逻辑执行完毕后,返回给调用方的结果。例如行为流算完价格后返回的
总价;AI 返回的生成的文案;API 返回的状态码。前端组件通过捕获这些输出参数,进行后续的页面渲染或反馈。
3. 变量与参数的选型矩阵
| 数据诉求场景 | 变量/参数类型 | 选型原由与最佳实践 |
|---|---|---|
| 保存当前登录用户的核心身份 | 客户端变量 | 需要在应用内全局持久携带和复用。 |
| 控制当前页面中弹窗的显隐 | 页面变量 | 仅当前页面有效,离开页面自动销毁,避免内存泄漏与逻辑污染。 |
| 在复杂行为流中临时累加数据 | 行为流变量 | 计算过程中的暂存,属于后端局部变量,绝不应污染前端页面变量。 |
| 跳转至特定商品详情页 | 路径参数 | 生成清晰的独立网址(如 /product/123),利于搜索引擎收录(SEO)。 |
| 记录用户是从哪个渠道扫码进来的 | 查询参数 | 附加在链接后(如 ?source=qr),不改变核心路由结构。 |
| 向后端 API、AI 或行为流传递业务数据 | 输入参数 | 跨越边界的强契约,保证逻辑单元黑盒运行的独立性与可复用性。 |
| 根据后端处理结果更新前端界面 | 输出参数 | 承接逻辑黑盒的返回结果,触发 UI 层的刷新、跳转或交互提示。 |
Last updated on