Node.js – EJS – 包括一个部分

我正在尝试为节点使用embedded式JavaScript渲染器: https : //github.com/visionmedia/ejs

我想知道如何在.ejs视图文件中包含另一个视图文件(部分)。

使用Express 3.0:

<%- include myview.ejs %> 

该path与包含该文件的调用者相关,而不是来自使用app.set("views", "path/to/views")设置的views目录。

EJS包括

在Express 4.x我使用以下来加载ejs

  var path = require('path'); // Set the default templating engine to ejs app.set('view engine', 'ejs'); app.set('views', path.join(__dirname, 'views')); // The views/index.ejs exists in the app directory app.get('/hello', function (req, res) { res.render('index', {title: 'title'}); }); 

那么你只需要两个文件,使其工作 – views/index.ejs

 <%- include partials/navigation.ejs %> 

views/partials/navigation.ejs

 <ul><li class="active">...</li>...</ul> 

你也可以告诉Express使用ejs的html模板:

 var path = require('path'); var EJS = require('ejs'); app.engine('html', EJS.renderFile); // Set the default templating engine to ejs app.set('view engine', 'ejs'); app.set('views', path.join(__dirname, 'views')); // The views/index.html exists in the app directory app.get('/hello', function (req, res) { res.render('index.html', {title: 'title'}); }); 

最后你也可以使用ejs布局模块:

 var EJSLayout = require('express-ejs-layouts'); app.use(EJSLayout); 

这将使用views/layout.ejs作为你的布局。

从Express 4.x开始

app.js

 // above is all your node requires // view engine setup app.set('views', path.join(__dirname, 'views')); <-- ./views has all your .ejs files app.set('view engine', 'ejs'); 

error.ejs

 <!-- because ejs knows your root directory for views, you can navigate to the ./base directory and select the header.ejs file and include it --> <% include ./base/header %> <h1> Other mark up here </h1> <% include ./base/footer %> 

Express 3.x不再支持部分。 根据后ejs的“部分未定义” ,您可以使用EJS中的“include”关键字replace已删除的部分function。

EJS本身目前不允许查看部分。 快递呢。