web-dev-qa-db-ja.com

Node.js-EJS-パーシャルを含む

ノードに埋め込みJavascriptレンダラーを使用しようとしています: https://github.com/visionmedia/ejs

.ejsビューファイル内に別のビューファイル(部分)を含める方法を知りたいです。

56
jeffreyveon

Express 3.0の場合:

_<%- include myview.ejs %>
_

パスは、app.set("views", "path/to/views")で設定されたビューディレクトリからではなく、ファイルを含む呼び出し元からの相対パスです。

EJSを含む

112
pkyeck

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'});
  });

次に、2つのファイルが必要です-views/index.ejs

<%- include partials/navigation.ejs %>

そしてviews/partials/navigation.ejs

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

HTMLテンプレートにejsを使用するようExpressに指示することもできます。

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をレイアウトとして使用します。

16
czerasz

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 %>
9
Daniel Ram

Express 3.xはパーシャルをサポートしなくなりました。投稿によると ejs 'partial is notdefined' 、削除された部分的な機能を置き換えるためにEJSで「include」キーワードを使用できます。

3
VCD

パス全体を使用してみてください==>

<%include C:/ Users/-serName/Desktop/NodeJS/partials/header.ejs%> --->「/」に注意してください

Node --version v8.11.4 + express module v.4.xでこれを試しました

0
fefy fefi