Передача сырого текста Markdown в Jade
Я играю с моим первым приложением Node.js Express, и, как знает каждый программист, первое, что вы должен строиться при тестировании новой структуры - это блог! В любом случае, я хотел бы написать статьи в Markdown, а затем отобразить их в представлении. Я видел, что Jade позволяет делать это внутри самого представления, используя фильтры, но я не могу заставить это работать.
Чтобы упростить ситуацию, вот пример того, о чем я говорю.
//app.js
res.render("article", {
md : "Hello World!\n\n*Woo*"
});
//article.jade
section
:markdown
#{md}
Но это выводит это: <section><h1>{md}</h1></section>
... он не заменяет переменные, которые я передал ему.
Затем я попробовал это:
//article.jade
section
:markdown
!{md}
И вывод следующий:
<section><p>Hello World!
*Woo*</p></section>
Итак, теперь он не разбирает уценку!
Мне удалось заставить это работать, проанализировав уценку в файле app.js
, а затем передав HTML в представление для отображения, но я не знаю, что кажется немного беспорядочным.
Есть ли способ передать переменные в фильтры Jade?
Ответы
Ответ 1
Вы можете сделать это с помощью функции, переданной в jade из node:
var md = require("node-markdown").Markdown;
Затем передайте его в представление как локальное:
res.render('view', { md:md, markdownContent:data });
Затем визуализируйте его в представлении нефрита, вызвав функцию:
!= md(markdownContent)
Ответ 2
Модуль node node-markdown
устарел. marked - новая версия. Вы можете попробовать как это
var md = require('marked');
Внутри вашего маршрутизатора
res.render('template', { md: md });
Внутри вашего нефритового шаблона
div!= md(note.string)
Ответ 3
Я не думаю, что нефрит может сделать это из коробки. Один из способов добиться этого, который может чувствовать себя немного чище, чем предварительная рендеринг, заключается в создании вспомогательной функции под названием markdown
, которая берет строку уценки и возвращает HTML. Тогда вы можете сделать что-то вроде
section
!= markdown(md)
Функция уценки должна быть включена в данные locals
при визуализации шаблона нефрита и может напрямую использовать библиотеку меток для преобразования синтаксиса уценки в HTML.
Ответ 4
Если вы используете поддержку Scalate Jade, вы можете ввести:
section
:&markdown
#{md}
Вы также можете импортировать внешние файлы с помощью:
section
:&markdown
#{include("MyFile.md")}