Подтвердить что ты не робот

Зачем мне Markdown?

Зачем мне нужен Markdown с редактором переднего редактирования, таким как WMD? Что делает уценка с контентом, отправленным из редактора ОМУ?
Как Markdown хранит контент в бэкэнде? Это так же, как *bold* или в каком-то другом формате? Почему я не могу просто сделать HTML кодировать?

Извините, если я звучал очень наивно.

4b9b3361

Ответ 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)