的Node.js - EJS - 包括部分

问题描述:

我想使用嵌入的JavaScript渲染节点: https://github.com/visionmedia/ejs的Node.js - EJS - 包括部分

我想知道我可以包括.ejs视图文件内的另一个视图文件(部分) 。

+3

局部系统实际上是ExpressJS的一部分,我相信。你在使用Express框架吗? – Zikes 2011-03-23 17:06:17

+0

不,我没有使用..如果只有模板引擎无法实现,我可能必须沿着这条路线走。 – jeffreyveon 2011-03-24 07:47:45

随着高速3.0:

<%- include myview.ejs %> 

的路径是从谁包含文件,而不是从app.set("views", "path/to/views")设置views目录呼叫者相对。

EJS includes

+1

这应该是正确的答案,因为ejs/express的开发者更新了代码。 – Joshua 2011-07-19 22:07:10

+1

固定,thx,paaading – 2013-04-01 07:32:07

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

+4

过期信息。新版本按照@pkyeck – Joshua 2011-07-19 22:07:43

+1

的评论支持它EJS确实允许部分。 – mythicalcoder 2016-02-13 10:19:15

快车3.x中不再支持部分。根据文章ejs 'partial is not defined',您可以在EJS中使用“包含”关键字来替换已删除的部分功能。

+1

检查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 %>