Зачем мне Markdown?
Зачем мне нужен Markdown с редактором переднего редактирования, таким как WMD? Что делает уценка с контентом, отправленным из редактора ОМУ?
Как Markdown хранит контент в бэкэнде? Это так же, как *bold*
или в каком-то другом формате? Почему я не могу просто сделать HTML кодировать?
Извините, если я звучал очень наивно.
Ответы
Ответ 1
Вероятно, полезно сделать шаг назад и задать некоторые из более крупных вопросов. Проблема, с которой Markdown пытается решить, - это богатое редактирование в браузере. Рассмотрим это: в какой-то момент для любой части программного обеспечения, чтобы включить богатый текст, он должен каким-то образом описать богатство, но это может быть.
Мы могли бы назвать это описание богатства (по описанию богатства я имею в виду, что "этот бит текста выделен жирным шрифтом" или "этот бит текста является гиперссылкой" ), мы могли бы назвать это описание богатства "разметки" - это маркирует текст мета-насыщенностью.
Реализации богатого текста могут принимать два подхода: либо.) скрыть разметку от пользователя, либо b) дать им доступ к разметке.
Для тех, кто решил скрыть это, конечным результатом является очень часто WYSIWYG. Пользователь не обращает внимания на то, что происходит за кулисами. Редактор заботится о деталях. В качестве примера рассмотрим MS Word. Никто не манипулирует форматом разметки Word как обычный конечный пользователь.
Для реализаций, которые выбирают разметку разметки, тогда язык разметки позволяет пользователям взаимодействовать с ним. Такие языки разметки были бы такими, как HTML, делающий <tag>
или код BB, например, такие вещи, как [tag]
.
Markdown - один из таких языков.
В отличие от прежних типов, о которых я упоминал, Markdown попытался сконструировать себя так, чтобы разметка отображала обычные пользователи ASCII. Например, для людей обычно выделяется их текст, чтобы отключить его, *important*
, и это обозначение в Markdown является индикатором курсива.
Что касается хранения, как указал Стефан, система скорее всего сохранит необработанную уценку, потому что пользователю, скорее всего, потребуется возможность редактирования, и исходная уценка может быть отозвана для этой цели.
В большинстве систем, которые я создал, я сохраняю уценку, а затем нормализую ее на второе поле, которое кэширует HTML-рендеринг уценки. Таким образом, мне не нужно делать markdown- > рендеринг HTML для каждого поля уценки. Это занимает немного больше места, но я бы предпочел, чтобы у пользователя был более быстрый ответ, чем использование меньше места для хранения БД.
Следует также проявлять осторожность при принятии Markdown из браузера, поскольку он может легко содержать теги <script>
, которые необходимо отфильтровать. Большинство реализаций уценки также распознают HTML, смешанный с форматированием Markdown, так как для обеспечения безопасности вам необходимо убедиться, что ваши входы и кэши правильно обработаны.
Ответ 2
![diagram]()
Ответ 3
Основной причиной использования Markdown является читаемость помеченного текста. Например, вы можете отправить его в текстовом электронном письме, и читатель все равно поймет эмфизию, пули, текст будет разделен на параграфы и так далее.
Когда вы спрашиваете о хранении данных, это зависит. Если вы включите Markdown в движке блога WordPress, он хранит данные, так как пользователь вводит их - в Markdown. Однако при переполнении стека данные хранятся как HTML. По крайней мере, "Дампы данных" содержат HTML, а не Markdown (я видел людей, жалующихся), что они должны его переделать).
Если вы используете редактор WMD, вы можете показать пользователю, как будут выглядеть результаты после преобразования в HTML. Несмотря на то, что синтаксис Markdown действительно прост, нетрудно ошибаться. Следовательно, лучше показать пользователям результат.
Другая причина использования Markdown вместо управления WYSIWIG - элемент управления WYSIWIG позволяет пользователю использовать HTML в данных, которые вы показываете на своей веб-странице. Итак, вы должны быть тем, кто решает, когда есть просто неправильный HTML, и когда это зло XSS/CSRF/любая инъекция. В Markdown вы просто конвертируете * something * в <b>something</b>
, удаляете любые неявные элементы HTML, и все готово.
Ответ 4
Причиной использования альтернативной системы кодирования, отличной от HTML, является безопасность
Markdown и другие подобные системы кодирования в стиле wiki обычно не поддерживают языки сценариев
HTML поддерживает языки сценариев разными способами (
Две основные проблемы безопасности:
-
Вредоносные преступники используют скрипты в созданном пользователем контенте для попытки действий с вредоносными программами на компьютере для чтения контента с помощью сценариев для доступа к известным дырам безопасности.
-
Бесплатные загрузчики, использующие скрипты, чтобы подорвать остальную часть сайта, изменяя кадр или стили контента, то есть рекламу, меню, логотипы и т.д. Это также может быть преступным поведением, если не просто раздражает
Используя промежуточный язык, такой как Markdown, у вас есть полный контроль над отображаемым выходом
Фильтрация HTML возможна, но также сложна и рискованна
Другой важной причиной для альтернативной системы кодирования является применение стиля. У обычного HTML слишком много опций. Ограничивая доступные параметры, пользователи могут использовать только определенные стили. Обычно это делает более понятным и более читаемым контент (сравните SO с Ebay)