跳至主要內容

双大括号语法糖

黄健大约 2 分钟进阶使用

组件交互章节中讲解到通过使用 {{}} 语法来读取内置交互变量

注意

在PageNow中,此语法仅在以下列出的几种场景中使用:

  • 当组件使用API接口数据源时,在API接口地址、API接口的Headers请求头,API接口POST请求参数体中可以使用
  • 当组件使用数据库数据源时,编辑SQL语句时可以使用
  • 页面轮播组件的页面地址中可以使用

后续可能还会逐步添加更多的适用场景!

使用中下划线配置默认值

{{}}语法主要用于特定场景下读取内置交互变量,在纯配置化方式实现内置数据交互流章节中,提到通过使用|来为读取内置交互变量时设置默认值,其语法解构如下所示:

{{内置交互变量|默认值}}{{内置交互变量|js:一段计算取值的JS脚本}}

值得注意的是:其中设置的默认值通过PageNow内置的解析器解析后,均转换为字符串类型

相关信息

PageNow于20220506版本更新后,已支持在默认值中使用 js: 语法运行JavaScript代码

js:语法

一般情况下,通过 {{}} 语法都是为了读取内置交互变量,但某些情况下,我们希望在编辑API接口地址时,或编辑SQL语句时,去运行一段JS代码,读取一些全局变量或做一些简单的逻辑运算构建变量数据时,就可以使用 js: 语法实现

例如以下API接口地址:

http://localhost:8090/test/getText?str={{js:window.globalStr}}

此接口地址中,使用了 js: 语法运行一段JS代码,代码中读取全局变量globalStr赋值给str参数。

虽说 {{}} 语法主要是为了读取内置交互变量,但可以看出,上面的接口地址示例中,和读取内置交互变量没有任何关系,这就是 {{}} 语法的特别之处,它可以解决我们在编辑API接口地址,或SQL语句时,提供更多的可扩展性。

注意

目前虽说 js: 语法能够运行JS代码块,但是并不是任何代码均可运行,必须确保这段JS脚本是可取值的,js: 语法中无法运行类似一个if语句,或者一段复杂的JS脚本且此脚本没有任何返回值。

什么是可取值的?

例如:

  • 读取全局变量
  • 读取当前页面URL参数
  • 运行一段JS运算,例如1+1、"hello"+"world"