【发布时间】:2020-10-27 18:53:44
【问题描述】:
假设我有一个元素,其 href/src 是这样的根路径:href="/abc/def"。
假设我还写了一个如下所示的函数:
function absolutizeHREF(href) {
const URLBase = new URL(`http://${process.env.HOST}:${process.env.PORT}/`);
return new URL(href, URLBase);
}
并将其结果作为属性发送到模板。
假设 HOST 和 PORT 是事先已知的,它有点工作。但我宁愿有与环境无关的解决方案。根据docs,URL() 构造函数的base 选项看起来像origin,所以问题是有一种简单的方法可以将其值从服务器实例中提取出来,然后作为base 值插入构造函数?
编辑:This comment 给了我一些想法:
function returnAbsoluteHREFServer(request) {
const protocol = request.protocol;
const fullHostname = request.headers.host;
return absoluteURL;
function absoluteURL(href) {
const URLBase = new URL(`${protocol}://${fullHostname}`);
const newURL = new URL(href, URLBase);
return newURL;
}
}
因此,第一个函数的结果可以作为传递给模板的对象的方法分配,然后在那里的相关链接上被调用。但是,它会因链接而异,这将问题带回到第一个问题 - 相同内容的不同 hrefs/srcs。
【问题讨论】:
标签: javascript node.js express pug