使用Go读取用于javascript渲染的文件

问题描述 投票:0回答:2

我看过许多关于将数组与Java结合使用的文章,但我正在尝试做一些不同的事情。我想使用Go读取配置文件,因为它可以访问服务器端,并在将与模板一起呈现的javascript函数中使用它。这是为了避免在JavaScript中对值进行硬编码:

我想更改此:

javaString += "function isValidPrefix() {"
javaString += "forbidden_prefixes = [ \"1\", \"2\", \"3\", \"4\", \"5\", \"6\" ];"
... more javascript ...
javaString += "}"

将前缀放在文件中的文件,这样就不必每次都想添加前缀时都重新编译。

所以我尝试了这个:

var configArr []string
configArr = LoadFile("/conf.dat")

javaString += "forbidden_prefixes = [];"

 for _, eachline := range configArr {
    javaString += "forbidden_prefixes.push(\" + eachline + \");"
    fmt.Println(eachline)
}

eachLine在for循环中正确打印,但是forbidden_​​prefixes包含一个元素+ eachLine +,我认为这是一个语法错误,但是即使我尝试检索DOM元素的值来进行检查,Web控制台也表示该元素不存在。硬编码的值一切正常。我是在做错什么,还是根本不可能?

javascript arrays go
2个回答
0
投票

您正在使用文字量构建字符串,而不使用您打算使用的变量。试试这个:

    javaString += fmt.Sprintf("forbidden_prefixes.push(\"%s\");",eachline)

0
投票

问题确实来自您的语法。您对引号进行了转义,因此+运算符实际上是字符串的一部分。这是两个可能的解决方案:

javaString += "forbidden_prefixes.push(\"" + eachline + "\");"

javaString += fmt.Sprintf("forbidden_prefixes.push(%q);", eachline)

[%q”将其替换为的值前后加上引号。

© www.soinside.com 2019 - 2024. All rights reserved.