首页 > 解决方案 > 使用 Go 读取文件以用于 javascript 渲染

问题描述

我看过很多关于 Go Arrays 与 Javascript 一起使用的文章,但我正在尝试做一些不同的事情。我想使用 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 循环中正确打印,但禁止前缀包含一个元素+ eachLine +,我认为这是一个语法错误,但即使我尝试检索 DOM 元素的值来检查它,Web 控制台也会说该元素不存在。硬编码值一切正常。我做错了什么还是根本不可能?

标签: javascriptarraysgo

解决方案


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

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

或者

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

%q在它被替换的值周围添加引号。


推荐阅读