[英]How to render HTML view with parameters using ExpressJS (on the home/root view)?
當用戶轉到我的應用首頁時,我想發送一個參數並呈現一個html文件。
這是我到目前為止所做的:
app.set('view engine', 'ejs');
app.use(express.static(__dirname + '/public'));
app.get('/', function (req, res) {
console.log('Hi !'); // never displayed
res.render('index', { foobar: 'foobar'});
});
HTML已正確呈現(可能是由於express.static
引起的),但是app.get('/')
似乎從未被調用過,所以我無法返回變量。
如何通過靜態HTML頁面public / index.html調用'/'返回變量?
我的最終目標是能夠在我的JS中使用foobar
,而無需對服務器進行任何其他調用。 你能幫我實現這個目標嗎?
var express = require('express');
var router = express.Router();
router.get('/index',function(req,res){
res.sendFile(path.resolve('./public/index.html'));
});
module.exports = router;
如果您的public/
目錄中有一個名為index.html
文件,則如果請求url /
,則express.static()
將返回該文件,因此您的路由處理程序將永遠不會傳遞請求。
通常,模板存儲在與靜態(公共)資源不同的目錄中。 Express默認情況下會在./views
目錄中查找模板(除非另行說明),因此,如果將index.html
移到該目錄,它將由EJS呈現(但請參見下文),並且可以使用參數在里面。
由於EJS默認情況下將查找以.ejs
擴展名結尾的文件, .ejs
,如果要繼續使用.html
,則需要按以下方式設置Express:
var ejs = require('ejs');
...
app.set('view engine', 'html');
app.engine('html', ejs.renderFile);
這告訴Express在./views
目錄中查找擴展名為.html
的文件,並使用EJS呈現這些文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.