Что такое относительный путь

Погружаемся в дебри файловой системы. Что такое относительный путь? А абсолютный? Рассказываем о всех вариациях: зачем они нужны, как их применять и можно ли выбрать что-то одно?

Что такое относительный путь

Что такое путь?

Операционная система в компьютере оперирует документами, фотографиями и медиаданными, используя файловую систему. Эти файлы хранятся на накопителях разных форматов. Большая их часть сортирует и распределяет данные иерархическим методом.

То есть сначала идет корневая директория, являющаяся основной для всех остальных файлов, а потом следуют уже подчиняющиеся ей каталоги. Причем как пользовательские, так и системные.

В итоге мы имеем иерархическую структуру папок (или попросту дерево), где сначала наблюдаем непосредственно накопитель в первозданном виде, затем идет какая-то директория, в ней еще одна директория, а внутри может быть файл или еще с десяток папок. Получается матрешка, а, вернее, сотни и тысячи матрешек, складывающихся в одну.

И вот этот порядок открываемых директорий для достижения документа, хранящегося на диске, – и есть путь до файла. Обычно он идет, от корня до какой-то конкретной единицы контента. Но бывают случаи, когда путь будет строиться из соседних папок, причем более углубленных с точки зрения нашего дерева. Оба сценария мы рассмотрим далее.

URL и локальные адреса

Под локальным адресом подразумевается адрес до файла на том же компьютере, которым вы пользуетесь в текущий момент.

Допустим, у вас есть диск D и папки Documents и Stuff на нем – одна, вложенная в другую. В папке лежит файл picture.png. Путь до этого файла будет выглядеть следующим образом:

D:\Documents\Stuff\picture.png

Мы можем вставить этот путь в приложение «Проводник» и добраться до искомого изображения, пока его не перенесут в другое место.

URL – это аббревиатура, которая расшифровывается как Uniform Resource Locator, что в переводе значит «Универсальный локатор ресурса». Такие адреса используют в интернете. URL включает в себя:

  • Протокол, используемый для подключения к серверу (сайту).
  • Хост (название сайта вкупе с доменным именем).
  • Путь до файла на хосте.

Представим, что мы хотим достать файл на типичном сайте с названием mir-mebeli.com, который расположен в разделе «Кухня». Путь до такого файла мог бы выглядеть так:

https://www.mir-mebeli.ru/kitchen/green-chair845/

Что такое абсолютный путь?

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

На деле он выглядит так:

http://www.buyibanez.ru/images/PLAYERS/p1014959.jpg

Что такое относительный путь

Это адрес с изображением инструмента на сайте Buy Ibanez. Видно, что используется протокол http, видно доменное имя целиком, понятно, что файл лежит в директории images, внутри которой лежит папка PLAYERS, а там уже и картинка.

Такой адрес можно использовать для прямой отсылки на файл. Если у вас есть сайт и вы хотите встроить в него изображение, то в HTML-документе это могло бы выглядеть так:

<img src=»http://www.buyibanez.ru/images/PLAYERS/p1014959.jpg» alt=»гитара»>

Что такое относительный путь?

Относительный путь так называется, потому что указывает как «добраться» до файла относительно директории, в которой находится другой файл. Это явление часто используется в разработке. На примере создания сайта мы и будем дальше рассуждать по поводу относительности путей.

У вас есть проект, который лежит в корневой папке: он называется newapp. В проекте есть папка src, где лежит код сайта и несколько изображений. Например, kitty.png. Если вы захотите сослаться на это изображение в коде, то не нужно будет писать протокол, название вашего сайта, а потом еще и путь /newapp/src. Достаточно будет написать /kitty.png и система сама найдет нужный документ по относительному пути.

Если бы мы добавляли это изображение в HTML-документ, то получился бы следующий код:

<img src=»/kitty.jpg» alt=»котенок»>

Что такое относительный путь

Вашему сайту/серверу не нужно знать точное расположение файла, так как он знает структуру директорий и сможет найти любой компонент по относительному пути.

Такой адрес зависит от расположения файлов по отношении друг к другу и мы рассмотрим другие примеры кода ниже.

Символические ссылки

Символическая ссылка (symlink) – это еще один термин, касающийся файловой системы. Она обозначает компонент, который может ссылаться на другой компонент, располагаясь в ином месте.

Технически, такой компонент скрывает под собой реальный адрес файла и переадресует пользователя при попытке получить доступ к symlink.

Все происходит автоматически. Абсолютный путь до файла вписывается в символическую ссылку и остается виден для программного окружения независимо от обстоятельств, пока symlink не будет удален с диска.

Примеры разных структур файлов и путей в них

Мы рассмотрели только один сценарий использования относительных путей. Вот еще несколько:

  • Если у вас есть сайт в папке mysite, его код лежит во вложенной директории src, а изображения лежат на уровень выше, в mysite. И чтобы «дотянуться» до картинки в коде, нужно указать путь на уровень выше с помощью двух точек.

<img src=»../kitty.png» alt=»котенок»>

Что такое относительный путь

  • Если картинка лежит в папке по соседству с src, например, в pictures, то надо вернуться на уровень выше и «залезть» в этот каталог. Ссылка в HTML-документе должна выглядеть так:

<img src=»../picture/kitty.png» alt=»котенок»>

Что такое относительный путь

  • Если картинка лежит в директории cast, вложенной в директорию pics, которая находится в папке src, то нужно лишь указать путь вместе с вышеперечисленными каталогами:

<img src=»/pics/cats/kitty.png» alt=»котенок»>

Что такое относительный путь

  • Предположим, код сайта лежит в папке components, находящейся в src, а картинка находится в корневом каталоге сайта. В этой ситуации нужно дважды прыгнуть «назад», чтобы добраться до нужного изображения. Делается это с помощью точек, и, если рассуждать логически, сделать это надо дважды.

<img src=»../../kitty.png» alt=»котенок»>

Пару раз поэкспериментируйте и сможете быстро находить файлы даже в самых запутанных структурах.

Какой путь лучше использовать?

Абсолютный путь в 95% случаев нужен только тогда, когда вы берете файл со стороннего ресурса. Ваш сайт или приложение ничего не знают о структуре файлов на чужом сервере и не имеют к ней доступа, поэтому придется оперировать открытыми ссылками – выбора нет.

На своем же проекте можно вообще отказаться от абсолютных путей и сделать ставку на относительные. Почему это хорошо?

  1. Не придется каждый раз вводить длинные адреса, чтобы сослаться на документ или картинку в коде.
  2. Если изменится доменное имя вашего сайта, то ни одна из относительных ссылок не пострадает. Все будет работать, как и работало.
  3. Можно переносить все дерево файлов в любое место и по отношению друг к другу документы внутри все равно будут в курсе, где расположены, и вебмастера не заставят переписывать все ссылки в коде.

Вместо заключения

На этом все. Относительные ссылки делают проект более устойчивым к изменениям, а, значит, и более надежным и простым в поддержке. Это то, чего хотят добиться все разработчики. А абсолютные пути помогают со 100% вероятностью найти нужный файл как на своем, так и на чужом сайте.

Hosting2go.ru