Относительный адрес
Познакомьтесь с начинающим верстальщиком Петей. Он обожает слушать рэп, учится кататься на скейтборде и уже неделю как осваивает HTML. Петя с головой погрузился в мир фронтенда и его глаза горят энтузиазмом — он разбирает на запчасти все сайты, которые только встречает в интернете.
Только что Пете приглянулся сайт с ярким оформлением и красивой анимацией. Юный верстальщик тут же сохранил страницу к себе на компьютер в папку "C:\site\"
. К своему стыду Пете не хватило денег на столь желанный Mac Book Air, а потому работает он с обычного ноутбука на Windows.
Внутри каталога Петя находит файл index.html
, открывает его в текстовом редакторе и сразу же натыкается на интересный тег с картинкой:
<img src="./imgs/photo.jpg"/>
Странное дело — файл index.html
находится на машине с Windows, здесь в файловых путях используется обратная косая черта \
, но “путь к картинке” указан с другой чертой — /
. Если совместить эти пути, то получится что-то противоестественное "C:\site\/imgs/photo.jpg"
.
Всё встанет на свои места, если Петя вспомнит, что браузер работает не с путями, а с адресами. Петя открыл в браузере файл C:\site\index.html
, но в адресной строке теперь указано file://C:\site\index.html
— это браузер догадался чего от него хотят и сам составил адрес для доступа к файлу. Теперь, когда в HTML разметке браузер обнаружит тег <img src="./imgs/photo.jpg"/>
, с относительным адресом "./imgs/photo.jpg"
, сделает он следующее:
- Разберет относительный адрес
./imgs/photo.jpg
на части —imgs
иphoto.jpg
- За основу возьмет адрес HTML странички
file://C:\site\index.html
- Составит полный адрес для каталога
imgs
:file://C:\site\imgs\
- Уточнит адрес для
photo.jpg
:file://C:\site\imgs\photo.jpg
Если бы Петя верстал на macOS вместо Windows, то браузер получил бы другой итоговый адрес, например такой file:///tmp/site/imgs/photo.jpg
. Раз в HTML файле указаны не пути к файлам, а их адреса, то сохраненная страничка будет одинаково хорошо работать на всех ОС, браузер сам побеспокоится о составлении платформоспецифичных адресов и даже заменит косые черты на обратные в случае Windows.
Фронтенд работает только с адресами, пути к файлам вычисляет браузер
Внутри HTML документа или внутри CSS вы не найдете путей к файлам, там есть только адреса. Стандарт требует использовать косую черту /
в качестве разделителя, независимо от платформы.
HTML не терпит обратной косой черты \
Страница в интернете
Использование адресов вместо путей максимально упрощает портирование вёрстки. Можно сверстать страничку на рабочем ноутбуке с Windows, затем скопировать все файлы на сервер с Linux и сайт будет работать без каких-либо изменений.
Сейчас у Пети в браузере открыта страничка по адресу file://C:\site\index.html
, а в каталоге C:\site\
лежат несколько файлов, необходимых сайту:
├── index.html
├── style.css
└── imgs
└── photo.jpg
Если у Пети есть Linux сервер, домен petr-ab.org
, и он заранее всё настроил, то скопировав файлы из каталога C:\site
на сервер в папку /var/www/site
он сделает сайт доступным для всех по адресу:
http://petr-ab.org/index.html
А если ещё немного поколдавать на сервере, то можно скрыть стандартное название файла index.html
и сократить адрес странички до http://petr-ab.org/
. Сайт будет работать благодаря использованию относительных адресов. Для сравнения, вот итоговые адреса к каждому из ресурсов/файлов:
Windows | Интернет | |
---|---|---|
страничка с главной сайта | file://C:\site\index.html | http://petr-ab.org/ |
./style.css | file://C:\site\style.css | http://petr-ab.org/style.css |
./imgs/photo.jpg | file://C:\site\imgs\photo.jpg | http://petr-ab.org/imgs/photo.jpg |
index.html - это особый файл, в адресе прячут его название
Попробуйте бесплатные уроки по Python
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.