質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
EJS

EJSは、JavaScript用のテンプレートエンジン。HTMLなどのテンプレートテキストにJavaScriptのロジックを記述することができます。また、変数・関数の実行をテンプレートテキスト内に埋め込むことも可能です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

1回答

1296閲覧

ejs.renderのfilenameには何を指定しても動作に影響はないのでしょうか?

elefolo1

総合スコア11

EJS

EJSは、JavaScript用のテンプレートエンジン。HTMLなどのテンプレートテキストにJavaScriptのロジックを記述することができます。また、変数・関数の実行をテンプレートテキスト内に埋め込むことも可能です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

1クリップ

投稿2019/06/18 05:06

編集2019/06/19 09:13

秀和システム刊 Node.js 超入門 第二版
https://www.shuwasystem.co.jp/book/9784798055220.html
ページ142
を参考にコーディングしていて、ejs.renderのfilenameについて疑問があり質問します。

下記3つのコードは「data_item.ejsをテンプレートとして使用する index.ejsをレンダリングする」という内容です。

コード1.app.js(主要部のみ抜粋)

const index_page = fs.readFileSync('./index.ejs', 'utf-8'); var msg = `これはIndexページです` var content = ejs.render(index_page, { title: "Index", content: msg, data: data, filename: 'data_item' //☆☆☆☆ }); res.writeHead(200, { 'Content-Type': 'text/html' }); res.write(content); res.end();

コード2.index.ejs(主要部のみ抜粋)

<table> <% for(var key in data) { %> <%- include('data_item', {key: key, val:[data[key]]}) %> <% } %> </table></p>

コード3.data_item.ejs

<tr> <th><%= key %></th> <td><%= val[0] %></td> </tr>

疑問

本の説明では、ejs.renderのfilename には、テンプレートのパーツ名('data_file')を指定すること、
とありましたが、'data_file'と指定せず、'hoge'や'fuga'など、テンプレートファイルとは無関係の内容を指定しても
レンダリングは支障なく行われました

filenameの行そのものを削除するとエラーとなります。

この動作をみて、ejs.renderのfilenameに指定する値は何らかの文字列であれば何でも構わないものなのか、などと思いましたが、
本当にそうなのでしょうか?

それとも、何らかの設定(例えばグローバル設定のようなもので何でもよいようなことが知らぬ間になされている、など)によって、'hoge','fuga'でも支障なく動作したのでしょうか?

ejs.renderについて検索しても、node.jsにおけるfilenameの説明が見つからず質問させていただきました。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ejsはフォルダに下の全ファイルをループするみたいです。フォルダの階層は間違いなければ、ファイル名はどの文字列でも構いません。
下記のリンクを参照してください。
https://github.com/mde/ejs/issues/124#issuecomment-200472029

投稿2021/01/12 14:14

Jude6666

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問