簡體   English   中英

如何使用ExpressJS(在主目錄/根目錄視圖上)使用參數呈現HTML視圖?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM