簡體   English   中英

“視圖”路徑與express.static中使用的路徑有什么區別?

[英]What is the difference between “views” path and the path used in express.static?

我從來沒有將Express用作用於向WebSocket應用程序提供JavaScript和HTML的靜態HTML服務器。 現在,我對一些試圖工作的示例代碼感到非常困惑。

在將示例更新為最新的Express版本后,初始化代碼如下所示:

var methodOverride = require('method-override');
var bodyParser = require('body-parser');
var errorHandler = require('errorhandler');
// One path...
app.set('views', __dirname + '/views');

app.set('view engine', 'pug');
app.use(bodyParser.urlencoded({
  extended: true
}));
app.use(methodOverride());

var path = require ('path');
// Another path
app.use(express.static(path.join(__dirname, '/public')));

我對express.static很熟悉。 這就是托管靜態HTML,圖像,腳本和其他文件的路徑。 但是另一條路困擾着我,我不明白這兩行:

app.set('views', __dirname + '/views');
app.set('view engine', 'pug'); // Maybe some HTML template parser???

問題是,這實際上會導致錯誤:

錯誤:無法在視圖目錄“ ... project path .../views ”中查找視圖“索引”

我不是在這里只是為了解決錯誤。 我更想知道我的意思是什么代碼。 誰能告訴我,我在做什么?

views不是靜態的。 當您使用response.render方法時, express將查找提供的模板名稱字符串,以找到一個模板,然后解析並發出該模板。

如果您的/views/index.pug包含以下內容:

html
  body
    h1= message

您可以創建一條路線:

app.get('/' (req, res) => {
  res.render('index', {message: "hello"});
});

如果要訪問靜態目錄中的內容,也可以直接使用該路由。

有關express模板引擎使用的更多信息,請點擊此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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