29

さて、ほとんど静的なホームページがありますが、ナビゲーション、フッターなどの部分的なビューが必要でした。私はejsを使用していますが、次のようになります。

私のコントローラー:home.js

// Dependencies
var express = require('express');


    module.exports = {
        get: function(req, res) {
            app.set('view engine', 'ejs');  
            var model = {
            layout:'home',
                    };


            res.render('home');


        }
    };

ビュー ディレクトリには、nav、home、および footer がすべて .ejs あります。

次に、テキストを削除した実際の html ファイルは次のようになります。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" >
<title>Tom Jones</title>

<!-- CSS -->
<link rel="stylesheet" href="/css/home.css" type="text/css" media="screen" >

</head>
<body>

<%- partial('nav') %>

<!--content part -->  
<div id="showcontainer">
        <section>

        </section>
</div>

<div id="maincontainer">
        <section>

        </section>
</div>

</body>
</html>

問題 私がそれをテストするたびに、パーシャルが定義されていないというエラーに遭遇します。ejs を要求しようとしましたが、成功しませんでした。

4

2 に答える 2

60

@Pickels が言ったように、Partial は 3.x で削除されました。ただし、EJS の最新バージョンは、「インクルード」と呼ばれる「パーシャル」を含めるためのメカニズムを提供します。

https://github.com/visionmedia/ejs#includes

インクルードは、include ステートメントを使用してテンプレートに関連しています。たとえば、「./views/users.ejs」と「./views/user/show.ejs」がある場合は、<% include user/show %> を使用します。インクルードされたファイルは文字通りテンプレートにインクルードされ、コンパイル後に IO は実行されないため、これらのインクルードされたテンプレートでローカル変数を使用できます。

以下は、古い partial() 関数の代わりとして機能します。Express 3.x を完全にサポートするには、他の場所で微調整を行う必要がありますが、ほとんどの場合、これでうまくいくようです (実際には、コードが少なくなり、パフォーマンスが向上します)。

<% include nav.ejs %> <!-- replaces your old <%- partial('nav') %> -->
于 2012-08-06T20:42:47.333 に答える
4

一部は 3.x で削除されました。パーシャルを提供するのは、テンプレート エンジン次第です。

于 2012-07-05T20:05:43.173 に答える