Вероятно, полезно сделать шаг назад и задать некоторые более крупные вопросы.Проблема, которую пытается решить Markdown, - это богатое редактирование в браузере.Подумайте об этом: в какой-то момент для любого программного обеспечения, позволяющего использовать расширенный текст, оно должно каким-то образом описывать богатство, как бы то ни было.
Мы можем назвать это описание богатства (описанием богатства).Я имею в виду, что «этот бит текста выделен жирным шрифтом» или «этот бит текста является гиперссылкой), мы могли бы назвать это описание богатства« разметкой »- оно помечает текст мета« богатством ».
Реализации форматированного текста могут использовать два подхода: а) скрыть разметку от пользователя или б) предоставить им доступ к разметке.
Для тех, кто хочет скрыть ее, конечный результаточень часто WYSIWYG. Пользователь не замечает, что происходит за кулисами. Редактор заботится о деталях. В качестве примера рассмотрим MS Word. Никто не манипулирует форматом разметки Word как обычный конечный пользователь.
Для реализаций, которые выбирают выставлять разметку, тогда язык разметки позволяет пользователям взаимодействовать с ним.например, HTML делает <tag>
или BB-код, например [tag]
.
Markdown - один из таких языков.
В отличие от предыдущих типов, которые я упоминалMarkdown попытался спроектировать себя так, чтобы разметка отображала обычные ASCII, которые люди уже используют.Например, люди обычно отмечают звездочкой свой текст, чтобы отключить его, *important*
, и эта запись в Markdown является индикатором курсива.
Что касается хранения, как отметил Стефан, система будетскорее всего, сохраните исходную уценку, потому что пользователю, скорее всего, понадобится возможность редактирования, и для этой цели можно будет восстановить исходную уценку.
В большинстве построенных мною систем я сохраняюуценку, а затем нормализовать его до 2-го поля, которое кэширует рендеринг HTML уценки.Таким образом, мне не нужно делать уценку-> HTML-рендеринг для каждого поля уценки.Это занимает немного больше места, но я бы предпочел, чтобы пользователь получал более быстрый ответ, чем использовал бы меньше места для хранения БД.
Следует также соблюдать осторожность при принятии Markdown из браузера, поскольку он может легко содержать <script>
теги, которые необходимо отфильтровать.Большинство реализаций уценки также распознают HTML, смешанный с форматированием Markdown, так что для безопасности вам необходимо убедиться, что ваши входы и кеши правильно очищены.