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
其它
除了 URL path 参数及 URL query 参数外,还支持注入一些其它对象数据,如下:
| 对象 | 说明 | |
|---|---|---|
QUERY | URL query 参数。使用 ${QUERY} 将得到原始 URLSearchParams 对象,配合管道 string 可以得到拼接好的 query 参数,如 a=1&b=2。 | |
QUERY_ARRAY | URL query 参数,在解析某项参数值时将返回数组。例如当 URL 为 ?a=1&a=2 时,${QUERY_ARRAY.a} 将转换为 ["1", "2"] | |
HASH | URL hash 参数,如 #your-anchor | |
ANCHOR | URL hash 参数去掉前缀 #,如 your-anchor | |
APP | 微应用的配置(对应 storyboard 的 app 字段),例如 ${APP.homepage} | |
EVENT | 事件对象,仅适用于事件配置中 | |
SYS | 系统信息,当前包含当前登录用户名: username, 当前登录用户实例 ID: userInstanceId | |
FLAGS | 特性开关信息,key 为开关名,value 为是否启用的 boolean 值 | |
CTX | Context 上下文对象。 |
变更历史
| 组件 | 版本 | 变更 |
|---|---|---|
| brick_next | 1.15.16 | 支持:ANCHOR;支持使用类似 ${HASH} 获得整体数据(不适用于小写的 query 和 event,因为它们和 path 参数冲突),不再需要使用类似 ${HASH.*} |
| - | 1.15.12 | 支持在占位符中使用 JSON value 类型的默认值,给管道配置参数,加入空白符 |
| - | 1.15.6 | 支持:QUERY_ARRAY |
| - | 1.15.5 | 支持:FlAGS |
| - | 1.15.0 | 支持:SYS.username, SYS.userInstanceId |