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本身目前不允许查看部分。 快递呢。