Dlaczego programista miałby umieszczać ukośnik na początku każdej ścieżki względnej?
Badam trochę kodu dla przyjaciela i odkryłem, że deweloper, który zbudował swoją stronę, zaczął każdego krewnego src
, href
, i include
z ukośnikiem do przodu /
.
Na przykład:
src="/assets/js/jquery.js"
Nigdy wcześniej tego nie widziałem. Więc moje pytanie brzmi, dlaczego programista miałby umieszczać ukośnik /
na początku ścieżki względnej? 3 answers
Robi się to w celu wykorzenienia ścieżki (czyniąc ją ścieżką absolutną).
Zapewnia, że ścieżka nie jest względna, ale odczytywana z katalogu głównego serwisu.
Pozwala to przenosić plik i nie trzeba zmieniać linków do różnych zasobów.
Używając Twojego przykładu:
src="/assets/js/jquery.js"
Jeśli plik odniesienia znajduje się w /pages/admin/main.html
(na przykład) używając ścieżek względnych, użyjesz:
src="../../assets/js/jquery.js"
Załóżmy, że przenosisz plik do katalogu podrzędnego. Nie będą potrzebne żadne zmiany ponieważ z oryginalną ścieżką rooted, ale względną trzeba by zmienić na:
src="../../../assets/js/jquery.js"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-30 16:30:14
Dodanie odpowiedzi @Oded, ukośnik sprawia, że URL jest absolutny.
Na przykład:
/foo/bar/baz.css
To tłumaczy się na:
http://www.example.com/foo/bar/baz.css
Ale bez Slasha, rzeczy stają się nieco inne:
foo/bar/baz.css
To polecenie mówi przeglądarce, aby poszukała w bieżącego folderu (Nie katalogu głównego) katalogu foo
, a następnie kolejnych katalogów i Pliku.
Weźmy na przykład ten HTML:
<script type="text/javascript" src="foo.js"></script>
Jeśli przeniesiesz plik HTML do w innym folderze skrypt nie zostanie załadowany, ponieważ foo.js
nie jest przenoszony wraz z plikiem HTML.
Ale jeśli używasz bezwzględnego adresu URL:
<script type="text/javascript" src="/foo.js"></script>
Następnie plik JS jest ładowany dokładnie z http://www.example.com/foo.js
bez względu na to, gdzie znajduje się plik HTML.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:44
Ma to na celu zapewnienie, że zasób pochodzi z "głównego" serwera www.
Np.
Host jest www.example.com
URL staje się www.example.com/assets/js/jquery.js
Robię to z projektem, który chcę zapewnić NA ŻYWO na własnym wirtualnym hoście.
Problem naprawdę sprowadza się do tego, gdzie te aktywa są włączone. Na przykład, jeśli zasób jest dołączany z /help/pages/faq, programista może być pewien, że ścieżka będzie działać poprawnie, gdy witryna jest hostowana na nie zmieniającym się hoście, np. example.com.
Problem użycia ścieżek względnych, ' assets / js/jquery.js ' oznacza, że jeśli zasoby są zawarte Z /help/pages /faqs, to ścieżka staje się względem tego punktu początkowego, np./help/pages/faqs/assets/js / jquery.js
Hope that helps
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-30 16:29:00