Почему разработчик помещает переднюю косую черту в начале каждого относительного пути?
Я изучаю код для друга и обнаружил, что разработчик, который построил его сайт, начал каждый относительный src
, href
и include
с помощью косой черты /
.
Например:
src="/assets/js/jquery.js"
Я никогда раньше этого не видел. Поэтому мой вопрос: зачем разработчику помещать переднюю косую черту /
в начале относительного пути?
Ответы
Ответ 1
Это сделано для того, чтобы закодировать путь (делая его абсолютным путем).
Он гарантирует, что путь не является относительным, но читается из корня сайта.
Это позволяет перемещать файл и не менять ссылки на разные ресурсы.
Используя ваш пример:
src="/assets/js/jquery.js"
Если ссылочный файл находится в /pages/admin/main.html
(например) с использованием относительных путей, вы должны использовать:
src="../../assets/js/jquery.js"
Предположим, вы переместили файл в дочерний каталог. Никаких изменений не потребуется с исходным корневым путем, но относительный должен быть изменен на:
src="../../../assets/js/jquery.js"
Ответ 2
Добавив @Oded ответ, косая черта делает URL абсолютным.
Например:
/foo/bar/baz.css
Это означает:
http://www.example.com/foo/bar/baz.css
Но без косой черты все становится немного по-другому:
foo/bar/baz.css
Это говорит браузеру искать в текущей папке (а не в корневой папке) для каталога foo
, а затем последующих каталогов и файла.
Кроме того, возьмите, например, этот HTML:
<script type="text/javascript" src="foo.js"></script>
Если вы перемещаете файл HTML в другую папку, то script не будет загружаться, так как foo.js
не перемещается с файлом HTML.
Но если вы используете абсолютный URL-адрес:
<script type="text/javascript" src="/foo.js"></script>
Затем файл JS загружается ТОЧНО из http://www.example.com/foo.js
независимо от того, где находится файл HTML.
Ответ 3
Это значит, что актива происходит от "корня" веб-сервера.
например.
Хост - www.example.com
URL становится www.example.com/assets/js/jquery.js
Я делаю это с проектом, который я хочу обеспечить в прямом эфире на своем собственном виртуальном хосте.
Проблема действительно сводится к тому, где эти активы включены. Например, если актив включается в /help/pages/faq, разработчик может быть уверен, что путь будет работать правильно, если сайт размещен на не изменяющемся узле, например. example.com.
Проблема использования относительных путей "assets/js/jquery.js" заключается в том, что если активы включены из /help/pages/faqs, тогда путь становится относительно этой начальной точки, например. /help/pages/faqs/assets/js/jquery.js
Надеюсь, что поможет