的Node.js - EJS - 包括部分
我想使用嵌入的JavaScript渲染节点: https://github.com/visionmedia/ejs的Node.js - EJS - 包括部分
我想知道我可以包括.ejs视图文件内的另一个视图文件(部分) 。
随着高速3.0:
<%- include myview.ejs %>
的路径是从谁包含文件,而不是从app.set("views", "path/to/views")
设置views目录呼叫者相对。
这应该是正确的答案,因为ejs/express的开发者更新了代码。 – Joshua 2011-07-19 22:07:10
固定,thx,paaading – 2013-04-01 07:32:07
EJS本身目前不允许查看部分。快递呢。
过期信息。新版本按照@pkyeck – Joshua 2011-07-19 22:07:43
的评论支持它EJS确实允许部分。 – mythicalcoder 2016-02-13 10:19:15
快车3.x中不再支持部分。根据文章ejs 'partial is not defined',您可以在EJS中使用“包含”关键字来替换已删除的部分功能。
检查ejs-当地人表示3支持。 – UpTheCreek 2013-03-27 08:25:48
在快速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
为您的布局。
作为快递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 %>
局部系统实际上是ExpressJS的一部分,我相信。你在使用Express框架吗? – Zikes 2011-03-23 17:06:17
不,我没有使用..如果只有模板引擎无法实现,我可能必须沿着这条路线走。 – jeffreyveon 2011-03-24 07:47:45