Подтвердить что ты не робот

Почему разработчик помещает переднюю косую черту в начале каждого относительного пути?

Я изучаю код для друга и обнаружил, что разработчик, который построил его сайт, начал каждый относительный src, href и include с помощью косой черты /.

Например:

src="/assets/js/jquery.js"

Я никогда раньше этого не видел. Поэтому мой вопрос: зачем разработчику помещать переднюю косую черту / в начале относительного пути?

4b9b3361

Ответ 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

Надеюсь, что поможет