1

これはかなり基本的な質問のように思えますが、答えを見つけることができませんでした。

テンプレートエンジンとしてexpressを使用してejsおり、次のdir構造を使用しています。

 |-static
 |---css
 |---img
 |---js
 |-views

フォルダに静的ルーティングを定義していstaticます:

app.configure(function(){
        app.set('views', __dirname + '/views');
        app.set('view engine', 'ejs');
        app.use(express.bodyParser());
        app.use(partials());
        app.use(express.methodOverride());
        app.use(express.static(__dirname + '/static'));
        app.use(app.router);
        app.enable("jsonp callback");
    });

Viewsフォルダにすべてのファイルを保存しejsます。1つとlayout.ejs残りは特定のページの実際のコンテンツを含むファイルです。

次のルートを定義しました。

app.get('/', function(req,res){
    locals.date = new Date().toLocaleDateString();
    res.render('home.ejs', locals);
});

app.get('/about', function(req,res){
    locals.date = new Date().toLocaleDateString();
    res.render('about.ejs', locals);
});
app.get('/contact', function(req,res){
    locals.date = new Date().toLocaleDateString();
    res.render('contact.ejs', locals);
});

これはlayout.ejs、ページと一緒にそれを取得してレンダリングします。

もちろん、新しいページを追加するたびに新しいルートを追加するのではなく、自動的に追加する必要があります。

だから私はそれが別のものを定義することと関係があるはずだと推測していapp.use(express.static(__dirname + '/views'));ますか?また、URLを表示したくない/about.ejsが、表示したい/about

誰かが私を正しい方向に向けてくれませんか?

ありがとう !

4

1 に答える 1

3

たとえば、独自のルーティング ロジックを作成できます。

function customRouter (req, res, next)
{
    var locals = {};
    var controllerName = req.params.controllerName;
    res.render(controllerName + '.ejs', locals);
}

app.get('/:controllerName', customRouter);

これは簡単な例ですが、トリックがわかるはずです。必要に応じて変更できます。

于 2012-11-17T12:55:12.740 に答える