Должен ли я всегда использовать v-html/v-pre для отображения пользовательского ввода? Vue JS

#vue.js

Вопрос:

Я столкнулся с проблемой, когда Vue выдавал ошибки, которые не были определены x, если я пытался отображать пользовательский контент, такой как:

 <span><%= field.content %></span>
 

Это ruby, который обрабатывает серверную часть, он выводит что-то вроде: "Hi, it's {{todays_date}} today." что затем будет обрабатывать Vue. {{todays_date}} не предназначен для анализа с помощью Vue, а скорее предназначен для языка, специфичного для домена.

Затем я прочитал о v-pre, и это помогает избежать содержимого:

 <span v-pre><%= field.content %></span>
 

Однако теперь я понимаю, что везде, где я отображаю пользовательский контент во всем приложении, может возникнуть та же проблема. Когда он ломается, он ломает весь сайт.

Обратите внимание, что синтаксис ruby предназначен для обеспечения контекста, но на самом деле это может быть вывод любого поля базы данных, полученный на основе пользовательского ввода.

Как лучше всего с этим справиться? Кажется излишним использовать v-pre в каждом отдельном представлении, где я отображаю пользовательский ввод.

Комментарии:

1. Это синтаксис EJS?

2. @Daniel_Knights нет, это рендеринг на стороне сервера с помощью Ruby on Rails.

3. @Daniel_Knights Я полагаю, что ради этого поста я мог бы указать, какой контент будет отображаться на стороне сервера, хотя я подумал, что контекст переменной пользовательского ввода может быть полезен.

4. Проблема с шаблоном заключается в том, что вы жестко кодируете определенные части, части, которые вы вводите сами, и другие части заполняются во время выполнения шаблоном. То, что вы делаете, — это создание шаблона с шаблоном , что по определению будет очень раздражать. Почему Vue не может выполнить всю работу, включая то, что делает Руби? Тогда вам просто нужно будет отправить данные в Vue и не беспокоиться о мета-экранировании. Если вам действительно нужен этот двухэтапный процесс, то да, вы перечислили свои варианты.

5. Тогда вам придется жить с большим количеством побегов, так или иначе.