ExpressJS的Razor视图引擎

Tra*_*er1 28 node.js razor express

我一直在玩NodeJS,ExpressJS等,并且真的希望能够让模板引擎更接近ASP.Net MVC的节点(jshtml)的Razor引擎.我很好奇是否有人熟悉这样的野兽,或者更接近它的东西.

我想要的主要功能是基于区域/部分的主/父布局/模板插入,这似乎不是我到目前为止看到的节点的模板引擎中的一个功能.


- 编辑:2012-02-09 -

我基本上想要能够做到以下几点......

_layout.jshtml

<!DOCTYPE html>
<html>
<head>
  <!-- meta tags, etc -->

  <!-- title set in page -->
  <title>@ViewBag.Title</title>

  <!-- site-wide styles -->

  @RenderSection("Styles", false)
</head>
<body class="@ViewBag.PageClass">
  <!-- site-wide header -->

  <div id="side_content">
    @RenderSection("Side", false)
  </div>

  <div id="main_content">
    @RenderBody()
  </div>

  <!-- site-wide footer -->

  <!-- site-wide scripts -->

  @RenderSection("Scripts", false)
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

mypage.jshtml

@{
  ViewBag.Title = "My Page";
  ViewBag.PageClass = "page-x";
}

@section Styles {
  <link ... />
}

@section Scripts {
  <script type="text/javascript">
    var pagesettings = @Html.Raw(Model.SomeJsonContentFromController);
  </script>
}

@section Side {
  side content here
}

main content here
Run Code Online (Sandbox Code Playgroud)

这是从视图到包括多个部分的布局的某些标准.我还没有看到如何在Jade或EJS中做到这一点的例子,如果有可能我会欣赏这种见解.


- 编辑:2012-02-13 -

它看起来像ExpressJS 3 + Jade现在有"扩展"和"阻止"关键字,用于准确定义我正在寻找的东西.从这里取的例子.感谢@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
Run Code Online (Sandbox Code Playgroud)
//my-layout.jade
doctype 5
html
  head
    title #{pageTitle} - My Site
  body(class=pageClass)
    #side
      block side
    #main
      block main
    block scripts
Run Code Online (Sandbox Code Playgroud)

我不是100%肯定上面的某些方面(即从模板进行布局的变量......将在稍后尝试确认.

Cha*_*had 32

Vash是我发现的功能最全,最新的剃刀克隆.绝对检查一下.

  • 获胜者,冠军,鸡肉晚餐......我最近见过的. (6认同)

Jak*_*ner 12

我刚刚遇到了Bliss模板引擎.它使用几乎精确的剃刀语法.您可能需要做一些最小的工作才能将它干净地整合到express中.

结合快递


Mar*_*tin 7

当我遇到似乎支持Express JS的JSHTML时,我只是想看看Bliss.

https://github.com/elmerbulthuis/jshtml