采用以下示例结构:
{% set paths = {
...
'js': {
...
'jquery': {
'version': '1.7.2',
'cdn': 'https://ajax.googleapis.com/ajax/libs/jquery/{{paths.js.jquery.version}}/jquery.min.js',
'fallback': ....
}
}
}
%}
要访问,我通常会使用类似的内容:
<script src="{{paths.js.jquery.cdn}}"></script>
无法识别插值变量,您将获得类似...libs/jquery/%7B%7B%paths.js/jquery.version7D%7D/jquery.min.js...
的内容。
我试过了:
'a': 'text{{b}}text'
,'a': {{ ('text' ~ b ~ 'text') }}
,'a': "{{ ('text' ~ b ~ 'text') }}"
,'a': "{{ (['text', b, 'text'] | join }}"
,'a': "{{ (['text', {{b}}, 'text'] | join }}"
关于它的文档不多,但从我看来,它必须是这样的:
attribute(paths, attribute(js, attribute(jquery, cdn)))
对于一个级别来说没问题,但不是任意级别的深度。如果我误解了attribute()
,请纠正我。
答案 0 :(得分:0)
'a': ('text' ~ b ~ 'text'
)实际上是正确的,但表达式周围不能有花括号(因为我们已经在表达式中,变量定义)。
正确的方法:
{% set paths = {
...
'js': {
...
'jquery': {
'version': '1.7.2',
'cdn': ('https://ajax.googleapis.com/ajax/libs/jquery/' ~ paths.js.jquery.version ~ '/jquery.min.js'),
'fallback': ....
}
}
}
%}
但这里有一个简单的设计错误;当渲染器/解析器进入cdn
属性定义时,paths
尚未设置。解决这个问题的一种可能方法是首先声明另一个变量;
{% set params= {
'jqueryversion': '1.7.2'
}
%}
{% set paths = {
...
'js': {
...
'jquery': {
'cdn': ('https://ajax.googleapis.com/ajax/libs/jquery/' ~ params.jqueryversion ~ '/jquery.min.js'),
'fallback': ....
}
}
}
%}
显然,如果paths.js.jquery.cdn
仅使用一次,那么只需将父变量的值硬编码到您需要的位置并插入子变量:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/{{params.jqueryversion}}/jquery.min.js"></script>