根据 PUG 文档(https://pugjs.org/language/includes.html):
如果路径是绝对路径(例如,包括/root.pug),则解析为 预先选择.basedir。否则,路径将相对于 正在编译的当前文件。
我理解的是将路径介词作为res.render()的选项传递。 但是,我希望避免尽可能多地重复自己的麻烦,并希望采用顶级解决方案。
我尝试使用app.locals.basedir
,但我的代码无法预先建立basedir
路径。因此无法找到该文件。
以下是我的 Express.js 应用程序索引的主干:
// index.js
const express = require('express');
const app = express();
const path = require('path');
app.locals.basedir = __dirname;
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.get('/', function(req, res){
res.render('index');
});
app.listen(3000, function(){
console.log('Server started on port 3000');
});
我的 PUG 文件如下:
// views/index.pug
doctype html
html
head
script(type='text/javascript' src='/public/lib/map.js' defer='defer')
title ExpressApp
body
h1 Hello, World!
我的项目结构:
project/
index.js
views/
index.pug
public/
lib/
map.js
在 PUG 文件中使用绝对路径插入javascript文件的正确方法是什么?
答案 0 :(得分:0)
在 Express.js 应用程序中,只需使用app.use(express.static('public'))
设置Web根目录,以便应用程序知道在哪里获取静态文件。
1}}不需要。{/ p>
在 PUG 文件中,应按如下方式插入脚本:
app.locals.basedir = __dirname