Javascript 使用ejs,如何在执行正确的“联接”时保持正确的缩进?

Javascript 使用ejs,如何在执行正确的“联接”时保持正确的缩进?,javascript,ejs,Javascript,Ejs,我试图得到这个结果(有两个因素很重要:精确的缩进,因为它输出YAML,并且在最后一个IP之后没有逗号): 使用以下ejs代码: NotIpAddress: "aws:SourceIp": [ "<%- permittedIPAddresses.join('",\n"') %>" ] 所以我试了一下

我试图得到这个结果(有两个因素很重要:精确的缩进,因为它输出YAML,并且在最后一个IP之后没有逗号):

使用以下ejs代码:

            NotIpAddress:
                "aws:SourceIp": [
                    "<%- permittedIPAddresses.join('",\n"') %>"
                ]
所以我试了一下:

            NotIpAddress:
                "aws:SourceIp": [
                    <%_ for(const i in permittedIPAddresses){ _%>
                    "<%= permittedIPAddresses[i].trim() %>",
                    <%_ } _%>
                ]
所以我要么放弃正确的缩进,要么放弃正确的连接


在进行适当连接的同时,没有办法保持缩进?

以下是如何实现第二个解决方案,但省略最后一行的逗号:

NotIpAddress:
“aws:SourceIp”:[
{ _%>
]
这以提供索引位置的方式进行迭代,并在索引(i)不是最后一项的索引时添加逗号

作为替代方案,您可以利用另一个选项在YAML中格式化列表。它每行都是统一的,所以逗号问题就消失了,结果更干净了

NotIpAddress:
“aws:SourceIp”:
{ _%>
使用替代列表格式的结果如下所示:

NotIpAddress:
“aws:SourceIp”:
- "100.200.300.400"
- "110.200.300.400"
- "120.200.300.400"
对于其他替代方案,如果缩进级别在每种情况下都是固定的(即不依赖于上下文),则也可以使用
.map

NotIpAddress:
“aws:SourceIp”:[
`“${ip}`).加入(“,\n”)%>
]
NotIpAddress:
“aws:SourceIp”:
`-“${ip}`).加入(“\n”)%>

以下是如何实现第二个解决方案,但省略最后一行的逗号:

NotIpAddress:
“aws:SourceIp”:[
{ _%>
]
这以提供索引位置的方式进行迭代,并在索引(i)不是最后一项的索引时添加逗号

作为替代方案,您可以利用另一个选项在YAML中格式化列表。它每行都是统一的,所以逗号问题就消失了,结果更干净了

NotIpAddress:
“aws:SourceIp”:
{ _%>
使用替代列表格式的结果如下所示:

NotIpAddress:
“aws:SourceIp”:
- "100.200.300.400"
- "110.200.300.400"
- "120.200.300.400"
对于其他替代方案,如果缩进级别在每种情况下都是固定的(即不依赖于上下文),则也可以使用
.map

NotIpAddress:
“aws:SourceIp”:[
`“${ip}`).加入(“,\n”)%>
]
NotIpAddress:
“aws:SourceIp”:
`-“${ip}`).加入(“\n”)%>

为什么首先要使用EJS生成YML?!改用YML序列化程序。@Quentin我不知道你的意思。.用js代码表示数据并将其序列化?基本上我有一些YAML文件,我想通过代码向其中注入参数,我希望这些YAML文件以YAML的形式显示,但只需改变特定的parts并将多个YAML连接到一个YAML。为什么您首先要使用EJS生成YML?!请使用YML序列化程序。@Quentin我不确定您的意思。.要在js代码中表示数据并将其序列化?基本上我有一些YAML文件,我想通过代码将参数注入其中,我希望这些YAML文件作为ey与YAML相同,但只需更改特定部分,并将多个YAML连接到一个YAML即可。
            NotIpAddress:
                "aws:SourceIp": [
                    "100.200.300.400",
"110.200.300.400",
"120.200.300.400"
                ]
            NotIpAddress:
                "aws:SourceIp": [
                    <%_ for(const i in permittedIPAddresses){ _%>
                    "<%= permittedIPAddresses[i].trim() %>",
                    <%_ } _%>
                ]
            NotIpAddress:
                "aws:SourceIp": [                    
                    "100.200.300.400",
                    "110.200.300.400",
                    "120.200.300.400",
                ]