Литералы шаблонов (многострочная строка) с вложенными обратными окнами (`) в ES6
Как написать литерал шаблона (многострочную строку) в ES6, который будет содержать обратные элементы (`) и сам по себе (например, вложенные обратные выходы).
например:
var query = `UPDATE packet
SET
`association` = "3485435",
`tagname` = "associated"`
Причина, в которой я нуждаюсь:
Это очевидно в моем примере кода выше.
Я пытаюсь создать node-mysql запросы как Strings
и хранить их в переменной для передачи их на mySQL. Синтаксис запроса mySQL требует backticks для UPDATE
-тильных запросов.
-
Единственный способ, с помощью которого они могут выглядеть аккуратно и аккуратно, - это использовать литералы шаблонов, иначе запросы, использующие обычные однострочные строки, выглядят немного ужасно, потому что они в конечном итоге очень и очень длинные - это некоторые случаи.
-
Я также не хочу завершать строки, используя \n
, поскольку он громоздкий.
Ответы
Ответ 1
От ES6 In Depth: Шаблонные строки Джейсона Орендорфа:
Если вам нужно написать обратную линию внутри строки шаблона, вы должны избежать ее с обратной косой чертой: `\``
совпадает с "`"
.
Ваш запрос должен быть:
var query = `UPDATE packet
SET
\`association\` = "3485435",
\`tagname\` = "Simos"`
Ответ 2
Используйте\`, это работает для меня в последнем Chrome.
Ответ 3
Если вы хотите использовать апостроф в строке, созданной с помощью апострофов, вы можете избежать ее с помощью обратной косой черты:
'\''
Аналогично, если вы хотите использовать обратную линию в литерале шаблона, вам необходимо выполнить его с помощью обратного слэша:
`\``
Ответ 4
См. 11.8.6 Литературные лексические компоненты шаблона
Шаблон без подстановок определяется как
NoSubstitutionTemplate ::
` TemplateCharactersopt`
где символ шаблона
TemplateCharacter ::
$ [lookahead ≠ { ]
\ EscapeSequence
LineContinuation
LineTerminatorSequence
SourceCharacter but not one of ` or \ or $ or LineTerminator
Следовательно, `
не может быть символом шаблона, если вы не избежите его, указав его \
.
Ответ 5
Лично я считаю, что литералы шаблонов ES6 неадекватны для SQL (и уценки), главным образом потому, что вы не можете использовать символы обратного хода. Я бы хотел, чтобы они добавили строки с тремя кавычками, чтобы исправить это правильно.
Тем временем, поскольку вы, вероятно, используете transpiler для ES6, вы можете использовать triplet (отказ от ответственности: я автор).
Ответ 6
ES6 имеет новые функции
Литералы шаблонов
и
Отмеченные шаблонные литералы (тегированные шаблоны)
которые облегчают работу со строками. Вы завершаете текст в `backticks`
С этим мы можем:
1.Interpolate variables
let foo = "abc";
console.log(`Welcome ${foo}`); // Welcome abc
2.Интерполируйте любое выражение
console.log(`2+3 = ${2+3}`) // 2+3 = 5
3.Согласовать строки с кавычками "и" и без избегайте чего-либо.
let foo = `foo is 'bar', "bar" is foo`
console.log(foo); // "foo is 'bar', "bar" is foo"
Синтаксис 4.Cleaner для многострочной строки
let text = `foo is bar
bar is foo`
console.log(text);
//"foo is bar
//bar is foo"
Шаблоны 5.Tagged, мы можем передать шаблонные литералы в функцию, вот как:
let person = 'Mike';
let age = 28;
let output = myTag `that ${ person } is ${ age }`;
function myTag(strings, personExp, ageExp) {
//strings[0] gets value "that "
//strings[1] gets value " is "
//personExp gets value " Mike "
//ageStr gets value "28"
return strings[0] + personExp + strings[1] + ageExp;
}
console.log(output);
// that Mike is 28
6.String.raw, мы можем получить необработанную форму, вот пример:
let text = String.raw `The "\n" newline won't result in a new line.'
console.log(text);
// The "\n" newline won't result in a new line.
Надеюсь, это поможет!!!!!!