Я возился с NodeJS, ExpressJS и т.д., и мне бы очень хотелось иметь шаблонизатор, приближенный к Razor-движку ASP.Net MVC для node (jshtml). Мне интересно, знаком ли кто-нибудь с таким зверем или чем-то близким к нему.
Основная функция, которую я хочу получить - это вставки на основе регионов/секций в основной/родительский макет/шаблон, чего, похоже, нет в движках шаблонов для node, которые я видел до сих пор.
-- edit: 2012-02-09 --
По сути, я хочу иметь возможность делать следующее...
_layout.jshtml
@ViewBag.Title
@RenderSection("Styles", false)
@RenderSection("Side", false)
@RenderBody()
@RenderSection("Scripts", false)
mypage.jshtml
@{
ViewBag.Title = "My Page";
ViewBag.PageClass = "page-x";
}
@section Styles {
}
@section Scripts {
}
@section Side {
side content here
}
main content here
Что является передачей определенных критериев из представления в макет, включая несколько секций. Я не видел примера, как это сделать в Jade или EJS, если это возможно, буду благодарен за понимание.
-- edit: 2012-02-13 --
Похоже, что в ExpressJS 3 + Jade теперь есть ключевые слова "extends" и "block" для определения именно того, что я искал. Пример взят отсюда. Спасибо @Don за его ответ и комментарий.
// my-template.jade
extends my-layout
// only guessing this var will be passed to the layout (testing later)
- var pageTitle = "My Template";
- var pageClass = "my-template";
block styles
style(type="text/css")
block scripts
script(src="myscript.js")
block side
div Side Content Here
block main
div Main Content Here
//my-layout.jade
doctype 5
html
head
title #{pageTitle} - My Site
body(class=pageClass)
#side
block side
#main
block main
block scripts
Я не уверен на 100% в некоторых аспектах выше (а именно в переносе переменных в макет из шаблона... постараюсь уточнить позже.