Возникли проблемы с преобразованием этого Jade в EJS

Я пытаюсь использовать модуль JShare для Node/Express.

Пример, приведенный на Github, говорит:

Затем вам нужно вызвать вспомогательный метод JShare в вашем файле макета:

!!!
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
    !{includeJShare()}
  body!= body

Итак, этот пример есть в Jade. Я использую EJS и не могу понять, как реализовать вспомогательный метод... Это кажется таким простым, но я не уверен, что делает !{} в Jade или как воспроизвести его в EJS.


person minttoothpick    schedule 06.12.2012    source источник
comment
что делает includeJShare()? потому что в ejs можно просто сделать <% include filename %>   -  person chovy    schedule 07.12.2012


Ответы (1)


!{var} - это неэкранированная интерполяция в нефрите. Вы должны иметь возможность получить то же самое в ejs, выполнив:

<%- includeJShare() %>

Это должно быть записано в теге <script>.

Изменить

Если ejs попытается разобрать include, отправьте запрос на исправление на https://github.com/brooklynDev/JShare/issues (или в ejs), а тем временем перейдите в node_modules/JShare/jshare.js и измените res.locals.includeJShare на просто res.locals.JShare, а затем используйте JShare() в своих ejs.

person glortho    schedule 07.12.2012
comment
Это было мое предположение, но он возвращает: Error: ENOENT, no such file or directory 'C:\...\htdocs\www\_oodle\views\JShare().ejs' Я думаю, что он пытается разобрать его с помощью ключевого слова include... Как указывает @chovy, это ключевое слово, но все, что я пытаюсь запустить, это фактическая функция с именем includeJShare. - person minttoothpick; 07.12.2012
comment
О да. Эту ошибку было бы хорошо опубликовать! А пока зайдите в node_modules/JShare/jshare.js и измените includeJShare на просто JShare, а затем используйте JShare() в своих ejs. Затем отправьте сообщение здесь: github.com/brooklynDev/JShare/issues. - person glortho; 07.12.2012
comment
Благодарю вас! Работает шустро. Он должен быть указан как <%- JShare() %>, чтобы не ускользнуть от тегов html вокруг script. - person minttoothpick; 07.12.2012
comment
Еще раз спасибо, @glortho, и я разместил вопрос на Github, как вы предложили. - person minttoothpick; 08.12.2012
comment
@minttoothpick Я написал JShare и благодарю вас за то, что вы обратили на это мое внимание. Я только что опубликовал обновление, чтобы исправить эту проблему. Теперь вы можете вызывать либо JShare(), либо includeJShare() (из Jade) в своем представлении. Версия NPM также была обновлена. - person BFree; 09.12.2012
comment
Спасибо @BFree! JShare был действительно полезным модулем! - person minttoothpick; 11.12.2012