2011-09-30 34 views
39

Tôi đang kiểm tra một số mã cho một người bạn và thấy rằng nhà phát triển đã xây dựng trang web của mình đã bắt đầu mỗi và mọi người thân src, hrefinclude với dấu gạch chéo /.Tại sao nhà phát triển đặt dấu gạch chéo ở đầu mỗi đường dẫn tương đối?

Ví dụ:

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

Tôi chưa bao giờ thấy điều này trước đây. Vì vậy, câu hỏi của tôi là, tại sao một nhà phát triển sẽ đặt dấu gạch chéo ở phía trước / khi bắt đầu một đường dẫn tương đối?

+0

dreamweaver ftl; p –

+0

Tôi đồng ý. Geany FTW: P – Blender

+5

tại sao downvote? tôi nghĩ đó là một câu hỏi hay .. + 1 counterwrike ftw! –

Trả lời

57

Nó được thực hiện để root đường dẫn (làm cho nó một con đường tuyệt đối).

Đảm bảo rằng đường dẫn không tương đối nhưng đọc từ gốc của trang web.

Điều này cho phép người dùng di chuyển một tệp và không phải thay đổi liên kết đến các tài nguyên khác nhau.

Sử dụng ví dụ của bạn:

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

Nếu tập tin tham khảo là trong /pages/admin/main.html (ví dụ) sử dụng đường dẫn tương đối bạn sẽ sử dụng:

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

Giả sử bạn di chuyển các tập tin vào một thư mục con. Không cần thay đổi nào đối với đường dẫn gốc bắt nguồn, nhưng đường dẫn tương đối sẽ cần phải thay đổi thành:

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

Ồ tôi hiểu rồi. Vì vậy, bạn có nghĩa là nó cho phép các tập tin * với * liên kết để di chuyển xung quanh, để thay vì đường dẫn có liên quan đến vị trí của tập tin, nó là tương đối so với gốc trang. Tôi vừa nói điều tương tự bạn vừa nói? Đôi khi nó giúp tôi lặp lại mọi thứ. Cảm ơn câu trả lời! – stefmikhail

+0

@stefmikhail - Có, bạn đã làm đúng. – Oded

7

Điều này đảm bảo nội dung xuất phát từ "gốc" của máy chủ web.

ví dụ: Máy chủ là www.example.com URL trở thành www.example.com/assets/js/jquery.js

Tôi làm điều này với dự án Tôi muốn đảm bảo trực tiếp trên máy chủ ảo của riêng chúng.

Sự cố thực sự xảy ra khi các tài sản đó được đưa vào. Ví dụ: nếu nội dung đang được đưa vào/help/pages/faq thì nhà phát triển có thể chắc chắn rằng đường dẫn sẽ hoạt động chính xác khi trang web được lưu trữ trên máy chủ không thay đổi, ví dụ: example.com.

Vấn đề sử dụng đường dẫn tương đối, 'assets/js/jquery.js' là nếu nội dung được bao gồm từ/help/pages/faqs thì đường dẫn sẽ tương ứng với điểm bắt đầu đó, ví dụ: /help/pages/faqs/assets/js/jquery.js

Hy vọng rằng sẽ giúp

23

Thêm vào @Oded's answer, dấu gạch chéo làm cho các URL tuyệt đối.

Ví dụ:

/foo/bar/baz.css 

Điều này được chuyển tới:

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

Nhưng mà không có dấu gạch chéo, mọi thứ trở nên một chút khác nhau:

này cho trình duyệt để nhìn vào hiện tại thư mục (không phải thư mục gốc) cho thư mục ectory foo và sau đó là các thư mục tiếp theo và tệp.


Ngoài ra, hãy ví dụ HTML này:

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

Nếu bạn di chuyển các tập tin HTML sang thư mục khác, sau đó kịch bản sẽ không tải, như foo.js là không được di chuyển với các tập tin HTML .

Nhưng nếu bạn sử dụng một URL tuyệt đối:

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

Sau đó, các tập tin JS được nạp CHÍNH XÁC từ http://www.example.com/foo.js bất kể file HTML là.

+0

điều này rất đơn giản nhưng đôi khi chúng ta quên. cảm ơn – Nelssen

Các vấn đề liên quan