Это делает ваш код намного более расширяемым и более простым в обслуживании, когда у вас есть схожие классы. Я младший программист, поэтому я не эксперт, но я только что закончил проект, требующий чего-то подобного.
Я работаю над программным обеспечением на стороне клиента, которое ведет переговоры с сервером, на котором работает медицинское устройство. Мы разрабатываем новую версию этого устройства, в которой есть несколько новых компонентов, которые клиент должен настраивать время от времени. Есть два типа новых компонентов, и они разные, но они также очень похожи. В принципе, мне пришлось создать две формы конфигурации, два списка классов, два из всего.
Я решил, что было бы лучше создать абстрактный базовый класс для каждого типа управления, который будет содержать почти всю реальную логику, а затем производные типы, чтобы заботиться о различиях между этими двумя компонентами. Однако базовые классы не могли бы выполнять операции над этими компонентами, если бы мне приходилось беспокоиться о типах все время (ну, они могли бы иметь, но в каждом методе был бы оператор «if») .
Я определил простой интерфейс для этих компонентов, и все базовые классы общаются с этим интерфейсом. Теперь, когда я что-то меняю, он почти «работает» везде, и у меня нет дублирования кода.
В целом считается, что рекомендуется использовать относительные URL-адреса, поэтому ваш сайт не будет привязан к базовому URL-адресу, где он в настоящее время развернут. Например, он сможет работать на локальном хосте, а также в вашем общедоступном домене без изменений.
В большинстве случаев относительные URL-адреса - это путь, они переносимы по своей природе, а это означает, что если вы хотите поднять свой сайт и поместить его кому-то, где еще он будет работать мгновенно, уменьшив, возможно, часы отладки.
Существует довольно приличная статья об абсолютных относительных URL-адресах , проверьте ее.
Я собираюсь не согласиться с большинством здесь.
Я думаю, что относительная схема URL-адреса «прекрасна», когда вы хотите быстро что-то запустить и запустить, а не думать нестандартно, особенно если ваш проект мал с небольшим количеством разработчиков (или только вы сами).
Однако, как только вы начнете работать над большими, жирными системами, где вы постоянно переключаете домены и протоколы, я считаю, что более элегантный подход находится в порядке.
Когда вы сравниваете абсолютные и относительные URL по существу, Absolute выигрывает. Зачем? Потому что он никогда не сломается. Когда-либо. Абсолютный URL - это именно то, что он говорит. Уловка - это когда вам нужно ПОДДЕРЖАТЬ абсолютные URL-адреса.
Слабый подход к абсолютной привязке URL-адресов на самом деле жестко кодирует весь URL-адрес. Не лучшая идея и, вероятно, виновник того, почему люди считают их опасными / злыми / раздражающими для поддержания. Лучший подход - написать себе простой в использовании генератор URL-адресов. Они легко записываются и могут быть невероятно мощными - автоматически обнаруживают ваш протокол, легко конфигурируются (буквально устанавливают URL-адрес один раз для всего приложения) и т. Д., И он сам внедряет ваш домен. Самое приятное в этом: вы продолжаете кодирование с использованием относительных URL-адресов, и во время выполнения приложение вставляет ваши URL-адреса в полные абсолюты «на лету». Удивительный.
Увидев, как практически все современные сайты используют какой-то динамический back-end, именно в этом интересе этот сайт должен делать это именно так. Абсолютные URL-адреса делают больше, чем просто дают вам определенную информацию о том, где они указывают, - они также могут улучшить производительность SEO.
Могу добавить, что аргумент, что абсолютные URL-адреса каким-то образом изменяет время загрузки страницы, является мифом. Если ваш домен весит более нескольких байт, и вы в модеме в 80-х годах, конечно. Но это уже не так. https://stackoverflow.com/ - 25 байт, тогда как файл topbar-sprite.png, который они используют для навигационной области сайта, весит 9+ кб. Это означает, что дополнительные URL-данные составляют 0,2% от загруженных данных по сравнению с файлом спрайта, и этот файл даже не считается большим хитом производительности.
Это большое неоптимизированное полностраничное фоновое изображение гораздо более вероятно замедлит ваше время загрузки.
Интересное сообщение о том, почему относительные URL не следует использовать, находится здесь: http://yoast.com/relative-urls-issues/
Проблема, которая может возникнуть у родственников, например, заключается в том, что иногда сопоставления серверов (помните о себе на больших, беспорядочных ) не соответствуют именам файлов, и разработчик может сделать предположение об относительном URL-адресе, который просто не соответствует действительности. Я только что увидел, что сегодня в проекте, в котором я включен, и это привело к удалению всей страницы.
Или, возможно, разработчик забыл переключить указатель и вдруг проиндексировал Google всю тестовую среду.
Абсолюты могут быть опасны, но при правильном использовании и таким образом, что не может сломать вашу сборку , они доказали, что они более надежный. Посмотрите на статью выше, которая дает кучу причин, почему генератор url Wordpress является супер удивительным.
:)
/
для ссылки на базовый путь? т.е. /products/wallets/thing.html
в отличие от thing.html
в отличие от http://www.myshop.com/products/wallets/thing.html
– Bradley Flood
14 April 2014 в 02:12
echo Route::url('route_name')
для создания абсолютного URL-адреса, используя URL-адрес сайта и информацию о маршруте, с возможностью сделать это через HTTPS.
– J.Money
15 May 2014 в 16:57
См. это: http://en.wikipedia.org/wiki/URI_scheme#Generic_syntax
foo://username:password@example.com:8042/over/there/index.dtb;type=animal?name=ferret#nose
\ / \________________/\_________/ \__/ \___/ \_/ \_________/ \_________/ \__/
| | | | | | | | |
| userinfo hostname port | | parameter query fragment
| \_______________________________/ \_____________|____|____________/
scheme | | | |
| authority |path|
| | |
| path interpretable as filename
| ___________|____________ |
/ \ / \ |
urn:example:animal:ferret:nose interpretable as extension
Абсолютный URL-адрес включает части перед частью «пути» - другими словами, он включает в себя схему (http
в http://foo/bar/baz
) и имя хоста (foo
в http://foo/bar/baz
) (и опционально порт, userinfo и порт).
Относительный URL-адреса начинаются с пути.
Абсолютные URL-адреса, ну, абсолютны: местоположение ресурса может быть разрешено, глядя только на сам URL-адрес. Относительный URL-адрес в некотором смысле неполный: для его решения вам нужна схема и имя хоста, и они обычно берутся из текущего контекста. Например, на веб-странице в
http://myhost/mypath/myresource1.html
вы можете поместить ссылку так:
<a href="pages/page1">click me</a>
В атрибуте href
ссылки используется относительный URL-адрес , и если он щелкнут, он должен быть разрешен, чтобы следовать ему. В этом случае текущим контекстом является
http://myhost/mypath/myresource1.html
, поэтому схема, имя хоста и ведущий путь к ним берутся и добавляются к pages/page1
, что дает
http://myhost/mypath/pages/page1
Если ссылка была бы:
<a href="/pages/page1">click me</a>
(обратите внимание на /
, появляющуюся в начале URL-адреса), тогда это было бы разрешено как
http://myhost/pages/page1
, потому что ведущий /
указывает корень хоста.
В веб-приложении я бы посоветовал использовать относительные URL-адреса для всех ресурсов, принадлежащих вашему приложению. Таким образом, если вы измените расположение страниц, все будет работать. Любые внешние ресурсы (могут быть страницы полностью вне вашего приложения, а также статический контент, который вы доставляете через сеть доставки контента) всегда должны указывать на использование абсолютных URL-адресов: если вы этого не делаете, просто нет способа найти их, потому что они проживает на другом сервере.
//example.com/…
, ?foobar
и #foobar
также являются относительными URL-адресами и не начинаются с URL-адреса (ну хорошо, для ?foobar
вы можете сказать, что он начинается с пути empty i>).
– Gumbo
5 January 2010 в 11:03
//example.com/…
-типами URL-адреса, называемые относительными? это ново для меня.
– törzsmókus
22 March 2015 в 09:52
URL-адрес, который начинается со схемы URL и конкретной схемы (http://
, https://
, ftp://
и т. д.), является абсолютным URL-адресом.
Любой другой URL-адрес является относительным URL-адресом и ему нужен базовый URL-адрес, из которого относительный URL-адрес разрешен (и, следовательно, зависит от него), который является URL-адресом ресурса, в котором используется ссылка, если не объявлено иначе.
Взгляните на RFC 2396 - Приложение C для примеров разрешения относительных URL.
Существует три типа, которые должны обсуждаться явно. На практике, хотя URL-адреса были абстрагированы для обработки на более низком уровне, и я хотел бы сказать, что разработчики могут пройти всю свою жизнь, не набирая ни одного URL-адреса вручную.
Абсолютные URL-адреса связывают ваш код с протоколом и доменом. Это можно преодолеть с помощью динамических URL-адресов.
<a href=“https://dev.example.com/a.html?q=”>https://dev.example.com/a.html?q=</a>
Absolute Pros:
Корневые относительные URL привязывают ваш код к базовому URL. Это можно преодолеть с помощью динамических URL-адресов и / или базовых тегов .
<a href=“/index.php?q=”>.example.com/index.php?q=</a>
Корневые относительные плюсы:
Относительные URL привязывают ваш код к структуре каталогов. Невозможно преодолеть это. Относительные URL-адреса полезны только в файловых системах для перемещения каталогов или в качестве ярлыка для черновой задачи.
<a href=“index.php?q=”>index.php?q=</a>
<link src=“../.././../css/default.css” />
Относительные минусы:
Разработчики перестали писать URL-адреса в том смысле, который здесь обсуждается. Все запросы относятся к индексному файлу веб-сайта и содержат строку запроса, а также маршрут. Маршрут можно рассматривать как мини-URL, который сообщает вашему приложению, что он будет создан.
<a href="<?=Route::url('named_url', array('first' => 'my', 'last' => 'whacky'))?>">
http://dev.example.com/index.php/my:whacky:url
</a>
Маршруты Плюсы:
Most люди будут использовать все три формы в своих проектах так или иначе. Ключ должен понять их и выбрать наиболее подходящий для задачи.
Если он используется для вашего веб-сайта, лучше использовать относительный URL-адрес, например, если вам нужно переместить сайт на другое доменное имя или просто отладить локально, вы можете.
Возьмите посмотрите, что делает stackoverflow (ctrl + U в firefox):
<a href="/users/recent/90691"> // Link to an internal element
В некоторых случаях они используют абсолютные URL:
<link rel="stylesheet" href="http://sstatic.net/so/all.css?v=5934">
... но это только лучшая практика для повышения скорости. В вашем случае это не похоже на то, что вы делаете что-то подобное, поэтому я не буду беспокоиться об этом.
Допустим, у вас есть сайт www.yourserver.com.
Абсолютный URL-адрес определяет точное местоположение документа, например:
http://www.yourserver.com/images/myimage.jpg
. В корневом каталоге для веб-документов у вас есть суб-directoy, а у вас есть myimage.jpg. ]
Относительный URL-адрес определяет местоположение относительно текущего каталога , например, если вы находитесь в корневом веб-каталоге, в котором находится ваше изображение:
images/myimage.jpg
( относительно этого корневого каталога)
Вы всегда должны использовать относительные URL-адреса, где это возможно. Если вы переместите сайт на www.anotherserver.com, вам нужно будет обновить все абсолютные URL-адреса, которые указывали на www.yourserver.com, а относительные будут продолжать работать как есть.
Предположим, мы создаем дочерний узел, файлы которого находятся в папке http://site.ru/shop .
Link to home page
href="http://sites.ru/shop/"
Link to the product page
href="http://sites.ru/shop/t-shirts/t-shirt-life-is-good/"
Link from home page to product page
href="t-shirts/t-shirt-life-is-good/"
Link from product page to home page
href="../../"
Хотя относительный URL-адрес выглядит короче абсолютного, но более предпочтительные URL-адреса предпочтительнее, так как ссылка может использоваться без изменений на любой странице сайта.
Мы рассмотрели два крайних случая: «абсолютно» абсолютные и «абсолютно» относительные URL-адреса. Но все относительно в этом мире. Это также относится к URL-адресам. Каждый раз, когда вы говорите об абсолютном URL-адресе, вы всегда должны указывать относительно того, что.
Link to home page
href="//sites.ru/shop/"
Link to product page
href="//sites.ru/shop/t-shirts/t-shirt-life-is-good/"
Google рекомендует такой URL. Теперь, однако, обычно считается, что http: // и https: // - разные сайты.
I.e. относительно корневой папки домена.
Link to home page
href="/shop/"
Link to product page
href="/shop/t-shirts/t-shirt-life-is-good/"
Это хороший выбор, если все страницы находятся в одном домене. Когда вы перемещаете свой сайт в другой домен, вам не нужно выполнять массовые замены доменного имени в URL-адресах.
Тег & lt; base & gt; указывает базовый URL-адрес, который автоматически добавляется ко всем относительным ссылкам и привязкам. Базовый тег не влияет на абсолютные ссылки. В качестве базового URL мы укажем домашнюю страницу: & lt; base href = "http://sites.ru/shop/" & gt ;.
Link to home page
href=""
Link to product page
href="t-shirts/t-shirt-life-is-good/"
Теперь вы можете переместить свой сайт не только в любой домен, но и в любую подпапку. Просто имейте в виду, что, хотя URL-адреса выглядят как относительные, на самом деле они абсолютные. Особенно обратите внимание на якоря. Чтобы перемещаться по текущей странице, мы должны написать href = "t-shirts / t-shirt-life-is-good / # comments", а не href = "# comments".
Для внутренних ссылок я использую базовые URL-адреса (5). Для внешних ссылок и информационных бюллетеней я использую абсолютные URL-адреса (1).