2011-09-30 10 views
39

Sto esaminando del codice per un amico e ho scoperto che lo sviluppatore che ha creato il suo sito ha iniziato tutti i relativi src, href e include con una barra diretta /.Perché uno sviluppatore dovrebbe posizionare una barra in avanti all'inizio di ogni percorso relativo?

Ad esempio:

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

non ho mai visto prima. Quindi la mia domanda è: perché uno sviluppatore dovrebbe piazzare una barra in avanti / all'inizio di un percorso relativo?

+0

dreamweaver ftl; p –

+0

Sono d'accordo. Geany FTW: P – Blender

+5

perché il downvote? ho pensato che fosse una buona domanda .. + 1 counterstrike ftw! –

risposta

57

È necessario per eseguire il root del percorso (rendendolo un percorso assoluto).

Assicura che il percorso non sia relativo ma letto dalla radice del sito.

Ciò consente di spostare un file e non è necessario modificare i collegamenti alle diverse risorse.

Usando il tuo esempio:

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

Se il file riferimento è a /pages/admin/main.html (per esempio) utilizzando percorsi relativi si usa:

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

Supponiamo si sposta il file in una directory figlio. Nessuna modifica sarebbero necessari per il percorso radicato originale, ma il relativo uno avrebbe bisogno di cambiare per:

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

Oh capisco. Quindi vuoi dire che permette al file * con * il link di muoversi, in modo che invece del percorso sia relativo alla posizione del file, è relativo alla radice del sito. Ho appena detto la stessa cosa che hai detto? A volte mi aiuta a ripetere le cose. Grazie per la risposta! – stefmikhail

+0

@stefmikhail - Sì, hai capito bene. – Oded

7

Questo per garantire il bene viene dalla "radice" del server web.

ad es. Host è www.example.com URL diventa www.example.com/assets/js/jquery.js

Faccio questo con il progetto che voglio garantire dal vivo sul proprio host virtuale.

Il problema si riduce in realtà a dove tali beni vengono inclusi. Ad esempio, se la risorsa viene inclusa da/help/pages/faq, lo sviluppatore può essere sicuro che il percorso funzionerà correttamente quando il sito è ospitato su un host che non cambia, ad es. example.com.

Il problema dell'utilizzo di percorsi relativi, 'assets/js/jquery.js' è che se le risorse sono incluse da/help/pages/faqs il percorso diventa relativo a quel punto di partenza, ad es. /help/pages/faqs/assets/js/jquery.js

Speranza che aiuta

23

Aggiungendo @Oded's answer, la barra rende l'URL assoluto.

Ad esempio:

/foo/bar/baz.css 

questo si traduce in:

http://www.example.com/foo/bar/baz.css 

Ma senza la barra, le cose diventano un po 'diverso:

Questo indica al browser di guardare nel la cartella corrente (non la cartella principale) per la dir ectory foo e quindi le successive directory e il file.


Inoltre, prendere ad esempio questo HTML:

<script type="text/javascript" src="foo.js"></script> 

Se si sposta il file HTML in un'altra cartella, quindi lo script non caricare, come foo.js non si sposta con il file HTML .

Ma se si utilizza un URL assoluto:

<script type="text/javascript" src="/foo.js"></script> 

Poi il file JS viene caricato ESATTAMENTE da http://www.example.com/foo.js non importa dove il file HTML è.

+0

questo è molto semplice ma a volte ci dimentichiamo. Grazie – Nelssen

Problemi correlati