Способ получить имя файла и имя родительского каталога - PullRequest
0 голосов
/ 08 марта 2019

Я создаю приложение на основе реагирования / избыточности и ищу лучший способ получить родительский каталог и URL-адрес формы имени файла. URL не имеет имени домена, поэтому он имеет путь только после имени домена, например,

/directory1/index.html?v=1.1
// need to get /directory1/index.html?v=1.1

directory1/directory2/dircetory3/index.html?v=1.1
// need to get directory2/index.html?v=1.1

/index.html?v=1.1
// need to get only index.html?v=1.1 as no parent directory is available

/ immediateParentDirectory / filename.html

Я пытался создать регулярное выражение, но хочу просто захотеть подтвердить, существует ли уже существующий модуль узла, который делает это, прежде чем я заново изобрету колесо

Ответы [ 2 ]

2 голосов
/ 08 марта 2019

Вы можете .split('/') URL-адрес на символе косой черты /. Затем .slice(-2), чтобы получить последние 2 предмета из разделенных предметов. Затем .join('/') эти два предмета вместе с косой чертой.

function parentPath(url) {
  return url.split('/').slice(-2).join('/')
}

console.log(parentPath('/directory1/index.html?v=1.1'))    
console.log(parentPath('directory1/directory2/dircetory3/index.html?v=1.1'))    
console.log(parentPath('/index.html?v=1.1'))
console.log(parentPath('index.html?v=1.1'))
0 голосов
/ 08 марта 2019

Вы можете использовать path.dirname и path.basename:

function doSomething(p) {
  const dir = path.dirname(p);
  // takes care of `foo` and `/foo`
  if (dir === '.' || dir === '/') {
    return p;
  }

  return path.basename(dir) + '/' + path.basename(p);
}

Это предполагает, что у вас нет путей с относительными секциями, например foo/bar/..baz/ или ./foo.

Мне неясно, хотите ли вы ведущую / или нет, но это также легко добавить или удалить, отметив result[0] === '/'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...