2011-09-30 24 views
39

Estoy examinando algo de código para un amigo, y han encontrado que el desarrollador que construyó su sitio comenzó a todos y cada relación src, href y include con una barra inclinada /.¿Por qué un desarrollador debe colocar una barra diagonal al inicio de cada ruta relativa?

Por ejemplo:

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

nunca he visto esto antes. Entonces mi pregunta es, ¿por qué un desarrollador colocaría una barra inclinada / al comienzo de una ruta relativa?

+0

dreamweaver ftl; p –

+0

Estoy de acuerdo. Geany FTW: P – Blender

+5

¿por qué el voto a favor? pensé que era una buena pregunta ... + 1 contraataque ¡ftw! –

Respuesta

57

Se hace para enraizar la ruta (convirtiéndola en una ruta absoluta).

Asegura que la ruta no es relativa, pero se lee desde la raíz del sitio.

Esto permite mover un archivo y no tener que cambiar los enlaces a los diferentes recursos.

Usando su ejemplo:

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

Si el archivo de referencia se encuentra en /pages/admin/main.html (por ejemplo) utilizando rutas relativas se debería utilizar:

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

Supongamos que se mueve el archivo en un directorio niño. no serían necesarios cambios para con la ruta arraigada original, pero el relativo tendrían que cambiar a:

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

Oh, ya veo. Entonces quiere decir que permite que el archivo * con * el enlace se mueva, de modo que en lugar de que la ruta sea relativa a la posición del archivo, sea relativa a la raíz del sitio. ¿Acabo de decir lo mismo que dijiste? A veces me ayuda a repetir cosas. ¡Gracias por la respuesta! – stefmikhail

+0

@stefmikhail - Sí, lo tienes bien. – Oded

7

Esto es para asegurar que el activo proviene de la "raíz" del servidor web.

p. Ej. El host es www.example.com URL se convierte en www.example.com/assets/js/jquery.js

Hago esto con el proyecto que quiero asegurar en vivo en su propio host virtual.

La cuestión realmente se reduce a dónde se incluyen esos activos. Por ejemplo, si el activo se incluye desde/help/pages/faq, el desarrollador puede estar seguro de que la ruta funcionará correctamente cuando el sitio esté alojado en un host no cambiante, p. ejemplo.com.

La cuestión del uso de rutas relativas, 'assets/js/jquery.js' es que si los activos se incluyen desde/help/pages/faqs, la ruta pasa a ser relativa a ese punto de inicio, p. /help/pages/faqs/assets/js/jquery.js

Espero que ayude

23

Adición de @Oded's answer, la barra hace que la dirección URL absoluta.

Por ejemplo:

/foo/bar/baz.css 

Esto se traduce en:

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

Pero sin la barra, las cosas son un poco diferentes:

Esto le dice al navegador para buscar en la carpeta actual (no la carpeta raíz) para el directorio ectory foo y luego los directorios subsiguientes y el archivo.


Además, tomar, por ejemplo, este código HTML:

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

Si mueve el archivo HTML en otra carpeta, a continuación, la secuencia de comandos no se cargará, como foo.js no se está moviendo con el archivo HTML .

Pero si se utiliza una URL absoluta:

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

A continuación, el archivo JS se carga exactamente de http://www.example.com/foo.js no importa donde el archivo HTML es.

+0

esto es muy simple, pero a veces nos olvidamos. Gracias – Nelssen

Cuestiones relacionadas