2016-04-08 6 views
1

を使用してテンプレートに渡す:読み出しデータと、私はデータを保持する二つのファイル持っているヒスイ

Title2 
Desc2 

FILE2.TXT

FILE1.TXT

Title1 
Desc1 

を私はその後、上記の各ファイルから1行目と2行目を渡す必要があるjadeテンプレートを用意しています。ここではヒスイのテンプレートは次のとおりです。私は、データファイルのそれぞれからテンプレートに行を渡すにはどうすればよい

app.get('/', function (req, res) { 
    res.render('index'); 
}); 

.title #{title} 
.desC#{desc} 

ここに私のserver.jsのですか?

+0

ファイルを読み取ります。 res.render( 'index'、{title:titleFromFile、desc:descFromFile}); –

答えて

1

ディスクから読み込み、書式を解析し、解析されたデータをテンプレートに渡す必要があります。

ディスクからの読み取りは、かなり簡単です。fs.readFile()を使用してください。

var fs = require('fs'); 
fs.readFile(filename, 'utf8', function(err, data) { 
    // do something with "data" here... 
}); 

多分、1回のリクエストで両方のファイルを読み取る必要がありますか?その場合、コールバックをネストする必要があります。また、bluebirdのような約束ライブラリを使用して、コールバックを簡素化することもできます。

var fs = require('fs'); 

fs.readFile(filename1, 'utf8', function(err, data1) { 
    fs.readFile(filename2, 'utf8', function(err, data2) { 
    // ... now parse in here 
    }); 
}); 

データを取得したら、解析する必要があります。あなたの例を考えると、あなたの書式はとてもシンプルです。これを解析する方法は次のとおりです。

var lines = data.split(/\r?\n/); 
var title = lines.shift(); 
var desc = lines.shift(); 
// or, maybe "lines.join('\n')" to support multiple lines 

最後に、テンプレートをクライアントにレンダリングします。 Expressを使用している場合(コード例のみに基づいて指定していない場合)、テンプレート変数をプロパティーとして2番目のパラメーターのres.render()に渡すことができます。

var fs = require('fs'); 
app.get('/', function(req, res, next) { 
    fs.readFile(filename, 'utf8', function(err, data) { 
    // reading the file failed, report error to the user 
    if (err) return next(err); 

    // parse the data 
    var lines = data.split(/\r?\n/); 
    var title = lines.shift(); 
    var desc = lines.shift(); 

    // render template 
    res.render('index', {title: title, desc: desc}); 
    }); 
}); 
関連する問題