Передача необработанного текста Markdown в Jade - PullRequest
25 голосов
/ 26 сентября 2011

Я играю с моим первым приложением 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?

Ответы [ 4 ]

19 голосов
/ 14 сентября 2012

Вы можете сделать это с помощью функции, переданной jade от узла:

var md = require("node-markdown").Markdown;

Затем передать его в представление как локальное:

res.render('view', { md:md, markdownContent:data });

Затем отобразить его вПросмотр нефрита путем вызова функции:

!= md(markdownContent)
15 голосов
/ 10 января 2014

Узловой модуль node-markdown устарел. помеченный является новой расширенной версией. Вы можете попробовать вот так

var md = require('marked');

Внутри вашего роутера

res.render('template', { md: md });

Внутри вашего нефритового шаблона

div!= md(note.string)
7 голосов
/ 02 октября 2011

Я не думаю, что Джейд может сделать это из коробки.Один из способов добиться этого, который может показаться немного чище, чем предварительная отрисовка, - создать вспомогательную функцию с именем markdown, которая принимает строку уценки и возвращает HTML.Затем вы могли бы сделать что-то вроде

section
    != markdown(md)

Функция уценки должна быть включена в данные locals при рендеринге нефритового шаблона и может напрямую использовать библиотеку уценки для преобразования синтаксиса уценки в HTML.

1 голос
/ 02 декабря 2011

Если вы используете Поддержка Scadeate Jade , вы можете ввести:

section
    :&markdown
        #{md}

Вы также можете импортировать внешние файлы с помощью:

section
    :&markdown
        #{include("MyFile.md")}
...