Как мне разрешить движку pug не преобразовывать некоторый синтаксис !{}?

avatar
AGamePlayer
9 августа 2021 в 01:44
31
1
2

Если я хочу взять в кавычки литерал !{a} в коде. Что мне делать?

- var a = '5' // I have to use the variable name "a"
script.
  var str = "!{a}"

Он преобразуется в:

<script>
  var a = "5";  // I want to have the string equals "!{a}", not "5"
</script>
Источник

Ответы (1)

avatar
Matias Kinnunen
10 августа 2021 в 08:40
2

Вы можете использовать интерполяцию для вывода строки '!{a}':

script.
  var str = "#{'!{a}'}"

Результат:

<script>
  var str = "!{a}"
</script>

Немного странно, но работает.


Еще одна возможность состоит в том, чтобы сохранить строку '!{a}' в переменной и использовать интерполяцию для ее вывода:

- var foo = '!{a}'
script.
  var str = "#{foo}"

Результат:

<script>
  var str = "!{a}"
</script>

Приложение:

Я думал, что экранирование интерполяции с помощью обратной косой черты будет работать, но это не так, потому что ! преобразуется в #:

script.
  var str = "\!{a}"

Результат:

<script>
  var str = "#{a}"
</script>

Похоже на ошибку.