Хранение текста с настраиваемым шрифтом в базе данных - PullRequest
1 голос
/ 28 мая 2020

У меня есть поле в моей базе данных (называемое «Текст»), в котором хранится текст, вводимый пользователем. Пользователь сможет изменить шрифт, добавить выделение жирным шрифтом, itali c, et c. куда они хотят в написанном тексте. Правильный ли способ справиться с этим, чтобы JS позволял пользователю настраивать свой текст, а затем при сохранении в моей базе данных добавлять теги в области, которые они настроили?

Пример:

Пользователь вводит «Здравствуйте, я пишу текст », используя что-то вроде WYSIWYG

В базе данных будет храниться Hello, I am \*BOLD*\writing some text \*BOLD*\, где \*BOLD*\ - тег.

Или существует уже существующий JS фреймворк, который сделает это за меня?

Ответы [ 2 ]

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

Другой вариант - сохранить html. Преимущество хранения html заключается в том, что он уже размечен, когда вам нужно будет отобразить его позже пользователю. Обратной стороной является то, что вы должны быть осторожны, дезинфицируя его, чтобы убедиться, что он не содержит никаких сценариев. Ознакомьтесь с пакетом sanitize- html из npm

(в зависимости от длины вашей строки может быть хорошей идеей сжать очищенный вывод для экономии полосы пропускания)

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

Обновленный ответ:

Я полагаю, вы решили использовать какой-то HTML текст для отправки в базу данных.

Как я видел ваш ответ на ответ @mankowitz :

Я подумываю сохранить длину строки <7500 символов (около 750 слов). Существуют ли какие-либо рекомендации для определения того, позволяет ли эта длина лучше сжимать очищенный вывод? </p>

Вы забыли важную вещь:

В основном вам понадобится для минимизации вашего HTML / CSS / JS / , et c текста, чтобы данные, отправляемые на сервер, были еще меньше .
Я считаю, что сжатие gz очень хорошее с HTML, потому что HTML содержит множество дубликатов тегов HTML.
Я вставил код HTML в свой редактор, добавил немного информации Ipsum и сжал его, получив коэффициент сжатия 250% и максимум 300%.

Символы не считаются

Символы, они могут иметь 3 байта или восемь бит, в зависимости от кодировки и языка текста. Итак, в этом ответе все будет считаться в байтах / битах.

Заключение

Примерно 170% степени сжатия для 570-байтовой строки HTML. Я рекомендую от 600 до 700 байт - это точка, с которой вы начнете сжимать данные.

Исходный ответ:

Причина:

Владелец этого вопроса хочет использовать текст HTML, в котором в исходном ответе используется кодировка BaseXX.

Вы должны использовать специальный формат файла.

Если вы можете, вы должны отправить файл с распаковкой на сервер. Если вы можете отправить только строку на сервер, используйте кодировку base64, кодировку base85 или кодировку base91.

Используйте специальный формат файла, который не рассматривается в этом ответе, но вот способы передачи файлы.

Кодирование чистого текста с использованием Markdown не рекомендуется из-за проблем безопасности.

  • Base64
    • Плюсы
      • встроенный веб-API / функции ЗДЕСЬ
      • Простота использования
    • Минусы
      • Большой размер выходной строки
      • Встроенные веб-API / функции в основном несовместимы с чистыми двоичными файлами, потребуется использовать двоичный преобразователь и кодировщик / декодер с пользовательским кодом base64, поскольку встроенные API / функции в основном не поддерживают двоичные форматы.
  • Base85
    • Плюсы
      • Меньший размер выходной строки
      • Код уже был создан
    • Минусы
      • Нет встроенного веб-API / func tions
      • Сложнее подключить все функции
  • Base91
    • Плюсы
      • ДАЖЕ МЕНЬШЕ РАЗМЕР ВЫХОДА
      • MADE для двоичных форматов
    • Минусы
      • На самом деле не используется для текста
      • Большинство пакетов, найденных в Google, - это npm -packages / false-Advertising
      • Полный КАК вряд ли известен при поиске в поисковых системах.
  • Чистый текст
    • Плюсы
      • Близко к 0% размерам.
      • Простота настройки.
    • Минусы
      • НЕОБХОДИМО КОДИРОВАТЬ СПЕЦИАЛЬНЫЕ МЕРЫ БЕЗОПАСНОСТИ ДЛЯ ПРЕДОТВРАЩЕНИЯ SQL / XSS / и т. Д. c ATACKS
      • Экранировать специальные символы / новые строки / и т.д. c.

Рекомендации:

По возможности используйте Base85 или BasE91.
НЕ ИСПОЛЬЗУЙТЕ ОПЦИЯ «ЧИСТЫЙ ТЕКСТ», ПОТОМУ ЧТО ОН НЕ ПОДДЕРЖИВАЕТ ШРИФТЫ В основном (сжатие вывода для экономии полосы пропускания)

Также прочтите:

Ответ @ mankowitz для получения дополнительной информации о пропускной способности

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...