node.js - ExpressJS 的 Razor View 引擎

标签 node.js razor express

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

我想要的主要功能是针对主/父布局/模板的基于区域/部分的插入,这似乎不是我目前看到的 Node 模板引擎中的功能。


-- 编辑: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>

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

将某些标准从 View 传递到包括多个部分的布局中。我还没有看到如何在 Jade 或 EJS 中执行此操作的示例,如果可能的话,我将不胜感激。


-- 编辑:2012-02-13 --

看起来像 ExpressJS 3 + Jade 现在有“扩展”和“ block ”关键字来精确定义我正在寻找的内容。以 from here 为例.感谢 @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% 确定(即从模板传递到布局的变量...稍后会尝试确认。

最佳答案

Vash是我发现的功能最完整和最新的 Razor 克隆。一定要看看那个。

关于node.js - ExpressJS 的 Razor View 引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9197440/

相关文章:

node.js - 为某个测试指定 Node 版本

c# - HTML 正在使用 RazorEngine 呈现为文字字符串。我怎样才能防止这种情况发生?

html - Bootstrap Grid Columns - 导致布局不正确的 HTML 标签

javascript - Node.js、express、jade、highcharts 和二维数组

json - 如何更新 Nodejs/MongoDB 对象数组中的字段

node.js - Swift http post 请求将空正文发送到服务器

node.js - 如何降低nodejs服务器端音频文件的音调?

javascript - 连接 MongoDB 时出错

c# - 用于图像扩展的 ASPNET Core img src 通配符

node.js - 如何使用 Express 在 Node 中安全上传文件?