用布局模板表达js - ejs

Chi*_*hin 9 ejs express

在我的快递应用程序中,我已将视图引擎更改为ejs.

有谁知道是否仍然可以利用视图模板?

Lip*_*ang 8

实际上在Express 3.X不支持layout.ejs之后,如果你想使用布局,下面的步骤应该由你自己完成:

  1. 在你的package.json文件中添加依赖"express-partials":"*"
     "dependencies": {
       "express": "3.1.0",
       "ejs": "*",
       "express-partials": "*"
     }
  1. 执行npm install安装最新版本express-partials
  2. 要求express-partials在你的app.js
    var partials = require('express-partials');
  3. app.use(partials());app.set('view engine', 'ejs');in app.js文件中添加代码

之后,您可以设计自己layout.ejs<%- body%>layout.ejs文件中添加块,这就足够了并且运行良好.


cho*_*ovy 6

你可以用这个模块来做...

https://github.com/aseemk/express-blocks

layout.ejs

<html>
    <body>
        <% include nav %>
        <h1><%= title %></h1>
        <%- body %>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

login.ejs

<% layout('layout') -%>
<form>...</form>
Run Code Online (Sandbox Code Playgroud)

nav.ejs

<nav>
  <% if ( session.logged_in ) { %>
    <a href="/account">account</a>
    <a href="/logout">logout</a>
  <% } else { %>
    <a href="/signup">signup</a>
    <a href="/login">login</a>
  <% } %>
  <a href="/">home</a>
</nav>
Run Code Online (Sandbox Code Playgroud)

我使用的是express-partials,但我发现表达式块更适合ejs并表达3.x. 使用partials是每次都必须传递数据的痛苦.随着<% include whatever %>数据已经可以访问.

在您的路线文件中,您可以像这样渲染:

exports.login.get = function(req, res){
  res.locals.session = req.session;
  res.render('login', { title: 'Login to your account' });
};
Run Code Online (Sandbox Code Playgroud)


Pic*_*els 5

如果我没记错的话,Express.js 将其留给模板引擎。因此,如果 ejs 不支持布局,那么你就不走运了。