将绝对路径转换为相对路径

rob*_*son 11 javascript node.js

在Node中工作我需要将我的请求路径转换为相对路径,这样我就可以将它放入一些具有不同文件夹结构的模板中.

基本上如果我从路径"/ foo/bar"开始,我需要我的相对路径是".."如果它是"/ foo/bar/baz"我需要它是"../ .."

我写了一对函数来做到这一点:

function splitPath(path) {
    return path.split('/').map(dots).slice(2).join('/');
}

function dots() {
    return '..';
}
Run Code Online (Sandbox Code Playgroud)

不确定这是否是最好的方法,或者是否可以以某种方式在String.replace中使用正则表达式?

编辑

我应该指出这是因为我可以将所有内容呈现为静态HTML,压缩整个项目,并将其发送给无法访问Web服务器的人.看我的第一条评论.

Mat*_*ias 21

如果我理解你的问题是正确的,你可以使用 path.relative(from, to)

文档

例:

var path = require('path');
console.log(path.relative('/foo/bar/baz', '/foo'));
Run Code Online (Sandbox Code Playgroud)

  • 嗯,这很接近......但仍然不太正确。重新阅读我发布的要求。如果路径是 /foo/bar 我需要 '..' 当我执行 path.relative('/foo/bar', '/') 时我会返回 '../..' 一般来说我认为这是正确的方法尽管。我可能需要更多地研究它。 (2认同)