0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ejsを使うときに必須コード!

Posted at

書こうと思った理由

EJS を使っているときに、res.render() ではなく express.static() でやっていたから、ほかのコードなどでなぜかダウンロードされる現象を少なくしたいから。

res.render()は、例えばこんな風に使います:

app.get('/hoge', (req, res) => {
  res.render(path.join(__dirname, '/src/hoge.ejs')); // <--ここ
});

これがポイント!

  1. res.render('テンプレート名')

    • 'hoge' は、テンプレートファイルの名前です。EJS では、通常 .ejs という拡張子を持つテンプレートファイルを使用します。この場合だと src/hoge.ejs というファイルが読み込まれます。
  2. データを渡す

    • テンプレートにデータを渡したい場合、第二引数にオブジェクトを渡すことができます。この例では、{ title: 'hogehoge' } というオブジェクトが渡されて、テンプレート内で title として使えます。

例えば、hoge.ejs ではこんな感じで使えます:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title><%= title %></title>
</head>
<body>
  <h1>Welcome to the hoge Page!</h1>
</body>
</html>

上記のコードで <%= title %> は、res.render() で渡された title の値(この場合は「hogehoge」)が挿入されます。

注意すること!

  • テンプレートファイルのパスが正しいか確認!

    • 例えば、EJS のデフォルトでは src ディレクトリにテンプレートが保存されるので、src/hoge.ejs というようにディレクトリ構造があっているか確認しましょう。
  • res.render() でテンプレートファイルが見つからない場合、エラーメッセージが表示されるので、その際はファイルの場所や名前をもう一度チェックすることが大事です!

これで res.render() が少しでも身近に感じられると嬉しいです。

node.jsサーバー起動用コード

const express = require('express');
const path = require('path');
const app = express();
const PORT = 3000;


// 静的ファイルの提供
app.use(express.static(path.join(__dirname, 'public')));
app.set('view engine', 'ejs');

// ルート設定
app.get('/hoge', (req, res) => {
  res.render(path.join(__dirname, '/src/hoge.ejs')); // <--ここ
});

// ポート指定
app.listen(PORT, () => {
  console.log(`Server is running on http://localhost:${PORT}`);
});

http://localhost:3000 行くと表示されます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?