2
我一直在寻找如何获取HTML页面的基础URL,以便来自浏览器的相对url请求使用该基础。修改<base>在服务器端动态标记渲染
下面是答案 Defining root of HTML in a folder within the site root folder
当从服务器渲染HTML - 有一个<base>
元素添加到HTML的可靠途径?
HTML文件是自动生成的,我不想手动将<base>
标记添加到文件,如果我可以避免它。当页面呈现时,以某种方式动态地添加它会很好。
因此,这里是HTML,因为它主张:
<head>
<title>Code coverage report for All files</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="prettify.css" />
<link rel="stylesheet" href="base.css" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(sort-arrow-sprite.png);
}
</style>
</head>
我想补充与服务器渲染时基本标签,所以它看起来像:
<head>
<title>Code coverage report for All files</title>
<meta charset="utf-8" />
<base href="http://localhost:3050/coverage/lcov-report/cdt-now/index.html"> // <<<<
<link rel="stylesheet" href="prettify.css" />
<link rel="stylesheet" href="base.css" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(sort-arrow-sprite.png);
}
</style>
</head>
这个问题我假设index.html文件不在我的项目的根目录下:
但是,index.html文件会生成相对路径请求,如上面<head>
中的<link>
标记所示。
我目前呈现的页面是这样的:
router.get('/', ac.allow('Admin'), function (req, res, next) {
let html = path.resolve(__dirname + '/../coverage/lcov-report/cdt-now/index.html');
res.setHeader('content-type', 'text/html');
fs.createReadStream(html).pipe(res);
});
您需要某种模板。你知道Jade,EJS吗? – sidewinder
就像我在问题中所说的 - 关键部分是我不控制文件 - 它是自动生成的 - 我不想手动修改文件,如果我可以避免它。 –
你不需要。 – sidewinder