Skip to main content
Version: 2.x

Inject 参数注入

storyboard.json 中的 properties 等字段的值,可以通过 placeholders 占位符 "${ ... }" 注入路由、应用及系统等相关的动态参数。

示例:

brick: instance-list
properties:
objectId: "${objectId}"
q: "${QUERY.q}"
page: "${QUERY.page|number}"
pageSize: "${QUERY.pageSize|number}"
sort: "${QUERY.sort=name}"
asc: "${QUERY.asc=0|boolean}"
fields: "${QUERY.fields|json}"
allQueryAsString: "/some-url?${QUERY.*|string}"

简单说明:

  • ${xyz} 匹配 URL path 中的参数(MatchResult.params["xyz"])。
  • ${QUERY.abc} 匹配 URL query 中的参数(URLSearchParams.get("abc"))。
  • ${QUERY.*} 匹配 URL query 对应的 URLSearchParams 对象。结合 ${QUERY.*|string} 可以获得序列化的参数如:a=1&b=2
  • ${xyz=good} 如果没有找到参数 xyz,那么设置一个默认值 "good",默认值仅使用 string
  • ${xyz|number} 匹配后,对参数做类型转换(或称为管道),未设置时将不做转换,提供的管道列表参见文档下一小节。
  • 可以同时设置默认值和类型转换:${QUERY.asc=0|boolean}
  • 可以像 JS 的模板字符串一样使用占位符:/some-url${QUERY.q},此时返回的整体数据始终为字符串,而单个完整的占位符会返回原始对象,例如 ${QUERY.*} 将返回 URLSearchParams 对象。

提示

最早我们支持小写的 ${query.abc},为了避免与 URL path 参数碰撞,现在统一推荐使用大写的注入对象: ${QUERY.abc}

提示

在本文档中,对于支持参数注入的字段将标注 💉 符号。

类型转换/管道

请参考 Pipes 管道

injectDeep

Since brick_next@1.13.6

默认 properties 会进行深层递归的参数注入,设置 injectDeep: false 则仅对 properties 字典的第一层值进行参数注入。

Before brick_next@1.13.6

通过设置 `injectDeep: true`,可以对 `properties` 进行*深层递归的参数注入*,否则仅对 `properties` 字典的第一层值进行参数注入。

其它

除了 URL path 参数及 URL query 参数外,还支持注入一些其它对象数据,如下:

对象说明
QUERYURL query 参数。使用 ${QUERY} 将得到原始 URLSearchParams 对象,配合管道 string 可以得到拼接好的 query 参数,如 a=1&b=2
QUERY_ARRAYURL query 参数,在解析某项参数值时将返回数组。例如当 URL 为 ?a=1&a=2 时,${QUERY_ARRAY.a} 将转换为 ["1", "2"]
HASHURL hash 参数,如 #your-anchor
ANCHORURL hash 参数去掉前缀 #,如 your-anchor
APP微应用的配置(对应 storyboard 的 app 字段),例如 ${APP.homepage}
EVENT事件对象,仅适用于事件配置中
SYS系统信息,当前包含当前登录用户名: username, 当前登录用户实例 ID: userInstanceId
FLAGS特性开关信息,key 为开关名,value 为是否启用的 boolean 值
CTXContext 上下文对象。

变更历史

组件版本变更
brick_next1.15.16支持:ANCHOR;支持使用类似 ${HASH} 获得整体数据(不适用于小写的 queryevent,因为它们和 path 参数冲突),不再需要使用类似 ${HASH.*}
-1.15.12支持在占位符中使用 JSON value 类型的默认值,给管道配置参数,加入空白符
-1.15.6支持:QUERY_ARRAY
-1.15.5支持:FlAGS
-1.15.0支持:SYS.username, SYS.userInstanceId