2017-10-13 20 views
0

以下是我在我的server.jsExpressJS:參數傳遞到HTML不起作用

var browserify = require('browserify-middleware'); 
var express = require('express'); 
var app = express(); 
var path = require("path"); 

app.listen(8080); 
console.log('Listening at http://localhost:8080'); 

// routes will go here 
app.get('/render', function(req, res) { 
    res.sendFile(path.join(__dirname+'/public/index.html'), {text: "sfsdfsf"}); 
}); 

和這裏的方法,我試圖讓變量text在我index.html,althgouh沒有工作:

<h1>{{ text }} </h1> 
<h1><% text %> </h1> 
<script type="text/javascript"> 
var text = "<%= text %>"; 
var text2 = "{{ text }}"; 
</script> 

任何想法,我哪裏出錯了?

+2

'res.sendFile()'沒有任何模板的功能,比如你正在嘗試使用。您需要使用實際的模板引擎(帕格,把手,灰塵,ejs等),然後使用'res.render()'將其數據傳遞以用於渲染。 – jfriend00

+1

我給了你四個模板引擎,所有這些引擎都有與Express一起工作的文檔。請自己做一些小作業,然後如果遇到困難,可以提出更具體的問題。從帕格開始。 – jfriend00

回答

1

選項1:我會建議像pug一樣添加模板引擎。模板引擎用實際值替換模板文件中的變量。爲了實現哈巴狗模板,請訪問https://expressjs.com/en/guide/using-template-engines.html

選項2:

'use strict'; 

var express = require('express'); 

var path = require("path"); 
var app = express(); 


const template = (text) => { 
return ` 
<!DOCTYPE html> 
<html> 
    <head> 
    <title>sample</title> 
    </head> 
    <body> 
    <h1>${text}</h1> 
    </body> 
</html>`; 
} 

app.get('/render', function(req, res) { 
    res.send(template('Hello')); 
}); 

app.listen(8080); 
console.log('Listening at http://localhost:8080');