1

Swig テンプレートと一緒にMEAN スタックを学習しようとしています。MEAN フレームワークを試してみたので、ゼロからコーディングしていますが、大量のファイルが生成され、最初は多すぎました。

現在、私の Swig テンプレート index.html は HTML をレンダリングしません。これは私が得ている出力です:

{% include 'header.html' %} 
<br>Welcome to my test website

私は次のことを期待しています

This is coming from Header
<br>Welcome to my test website

レンダリングされないのはなぜですか?

以下は私のフォルダ構造です:

--config
 -config.js
--node_modules
 -* //modules installed via npm link
--public
 -header.html
 -index.html
-package.json
-routes.js
-server.js

以下、各ファイルの内容

config.js

var port = process.env.PORT || 8080;

module.exports = {
    dburl: 'mongodb://localhost/test',
    port: port,
    templateEngine: 'swig'
}

header.html

<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<p> This is coming from Header</p>

index.html

{% include 'header.html' %}
<p>Welcome to my test website</p>
</body>

パッケージ.json

{
    "name": "test",
    "version": "0.0.1",
    "author": "Rukmaj Chandavar",
    "dependencies": {
        "express": "*",
        "mongoose": "*",
        "angular": "*",
        "swig": "*",
        "consolidate": "*"
    }
}

ルート.js

module.exports = function(app){
    app.get('*',function(req, res){
        res.send('index.html');
    });
}

サーバー.js

var express = require("express");
var app = express();
var mongoose = require("mongoose");
var config = require('./config/config');
var swig = require('swig');
var cons = require('consolidate');

mongoose.connect(config.dburl);

app.use(express.static(__dirname + '/public'));

app.set('views', __dirname + '/public');
app.engine('html', cons.swig);
app.set('view engine', 'html');


require('./routes') (app);

app.listen(config.port);
console.log('MeriDawat running on port ' + config.port)

以下は、インストールされているノード モジュールのバージョン番号です。

angular@1.2.18
consolidate@0.10.0
express@4.4.3
mongoose@3.8.12
passport@0.2.0
swig@1.3.2

これをトラブルシューティングして、前進するのに役立てていただければ幸いです。前もって感謝します。

4

1 に答える 1

1

これはroutes.jsの問題のある行だと思います:

res.send('index.html');

res.send()ファイルの内容を HTTP 応答で送り返すだけです。

テンプレートをレンダリングしてレンダリング結果を送り返すには、res.render()代わりに次のようにします。

res.render('index.html')
于 2014-07-03T14:32:13.267 に答える