Используйте Go, чтобы прочитать файл для использования при рендеринге javascript - PullRequest
0 голосов
/ 08 мая 2020

Я видел много статей о Go массивах, используемых с 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 l oop, но запрещено_prefixes содержит один элемент + eachLine +, что, как я предполагаю, является синтаксической ошибкой, но даже если я попытаюсь получить значение элемента DOM, чтобы проверить его, веб-консоль сообщает, что этот элемент не существует. Все работало нормально с жестко запрограммированными значениями. Я что-то делаю не так или это просто невозможно?

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

Проблема действительно связана с вашим синтаксисом. Вы экранировали кавычки, поэтому операторы + фактически являются частью строки. Вот два возможных решения:

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

Или

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

%q добавляет кавычки вокруг значения, на которое оно заменяется.

0 голосов
/ 08 мая 2020

Вы строите строку, используя литералы, без использования переменной, которую вы намеревались использовать. Попробуйте это:

    javaString += fmt.Sprintf("forbidden_prefixes.push(\"%s\");",eachline)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...