2012-02-23 24 views
6

Giá trị nào tốt hơn? Đang sử dụng số nhận dạng phân đoạn ...Thẻ bắt đầu bằng # (Mã định danh phân đoạn) VS API lịch sử Javascript

http://www.alinkthatdoesnotwork.com/#!/dir1/dir2/file.html 

... hoặc API lịch sử Javascript mới?

https://github.com/examplethatdoesnotwork/project/src/script.js 

Hoặc tôi có nên sử dụng cả hai? (Thông qua dự phòng)

khía cạnh:

  • Compatibility/Hỗ trợ
  • Speed ​​
  • Thuận tiện

Trả lời

2

Thẻ bắt đầu bằng # là một phương tiện để phân loại nội dung trên Twitter, nghĩa là định danh phân đoạn.

Sử dụng số nhận dạng phân đoạn để cho biết nội dung nào cần tải qua Ajax là một ý tưởng khủng khiếp. Họ là một hack là fragile, search engine unfriendly (except with more hacks on both sides) and depends on JavaScript.

API lịch sử là một hệ thống mạnh mẽ được thiết kế để thực hiện công việc đó. Vấn đề duy nhất với nó là browser support, nhưng (không giống như cách tiếp cận định danh đoạn) nó giảm xuống một cách duyên dáng đối với các URI thực sẽ được truyền trực tiếp đến máy chủ của bạn (là what Github does).

Thậm chí Twitter có vẻ là about to switch to the history API.

1

API lịch sử là bao la thích hợp hơn, miễn là liên kết bình thường hoạt động bình thường trong các trình duyệt không hỗ trợ nó.

Bạn có thể sử dụng thư viện như History.js để bật tính năng này trong các trình duyệt này.

Thông tin thêm tại đây: It's About The Hashbangs, Side Effects of Hash-Bang URLs.

Tóm lại, URL rất quan trọng. URL là vĩnh viễn và URL tuyệt vời không thay đổi và cuối cùng: Khi bạn băm, bạn không thể quay lại.

0

Tôi nghĩ câu hỏi là hỗ trợ. Bạn không thể chỉ sử dụng API Lịch sử vào lúc này vì nó không được IE hỗ trợ. Bạn sẽ cần một giải pháp dự phòng như GitHub.

0

Bạn đã liệt kê "khả năng tương thích" làm tiêu chí đầu tiên của mình. Kể từ khi API lịch sử isn't yet supported by all major vendors (Tôi đang xem bạn, Microsoft), thậm chí không có trong bản phát hành gần đây nhất của họ (IE9 không có nó), điều đó có nghĩa là bạn phải sử dụng hàm băm. (Đó là quá xấu, nhưng có chúng tôi đang có.) Và nó không chỉ là Microsoft, rất nhiều thiết bị di động đang sử dụng một hoặc hai phiên bản trở lại của trình duyệt di động của họ, và do đó vẫn không có nó.

1

Các phương pháp lịch sử mới vô cùng hữu ích cho điều hướng AJAX. Ví dụ: pushState hoặc replaceState cho phép bạn cập nhật thanh địa chỉ của trình duyệt để người dùng thấy URL rõ ràng thay vì một thứ được gắn thẻ bắt đầu xấu xí.

Tuy nhiên, như tôi chắc chắn bạn đã biết, hỗ trợ cho API mới vẫn còn hạn chế. location.hash được hỗ trợ rộng rãi hơn nhiều vào thời điểm này, có nghĩa là bạn phải viết một dự phòng băm cho các trình duyệt không thể tận dụng lợi thế của các công cụ window.history mới hơn.

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