내 사이트에 로그인 한 사용자 만 액세스 할 수있는 내부 대시 보드를 만들므로 검색 엔진에서 색인 생성/크롤링 할 수 없습니다. 이 대시 보드는 주로 단일 페이지 앱입니다. 더구나, 나는 상관하지 않는다 (적어도 나는 를 생각한다.) 귀여운 URL을 가지고있는 것에 대해를 생각한다. 진보적 인 향상은 없다. 자바 스크립트가 비활성화되어 있다면, 대시 보드는 작동하지 않는다.onhashchange 대 pushState
내가 필요한 것은 여러 상태 사이에서 뒤로/앞으로 단추를 사용하여 탐색 할 수있는 기능입니다 (예 : 열리는 다양한 모달). 그리고 매우 중요한 점은 외부에서을 대시 보드의 특정 상태에 연결할 수 있어야한다는 것입니다 (예 :이 구성에서 모달 A가 열려 있음). 예 : 대시 보드에 대한 링크가 포함 된 이메일을 통해
이 모든 것을 감안할 때 "오래된 학교"해시 뱅 (#!) 대 html5 푸시 스테이트가 선호됩니까? pushState는 이전 브라우저 지원을 위해 history.js와 같은 것을 사용하도록 요구합니다.
http://example.com/dashboard
나는 관계없이 특정 모달 상태로 해결하기 위해 거의 동일한 작업을 수행 할 필요가 없습니다 내가 pushState 또는 onhashchange을 사용하고 있는지 여부 : 내 대시 보드는 다음 URL에있는 경우 그리고 구조적으로 말하기? 다른 말로 :
http://example.com/dashboard#!modalA/state1
또는
http://example.com/dashboard/modalA/state1
은 모두 현재 대시 상태를 표시하는 방법을 알아 내기 위해 (A 프레임 워크에 의해 수행) 클라이언트 측 분석이 필요하다. 내 백엔드 컨트롤러는 모든 대시 보드 URL에 대해/dashboard/*에 매핑됩니다. 왜냐하면 모든 주 관심사가 클라이언트에서 처리되기 때문입니다.
내가 누락 된 항목이 있습니까? 문제는 아니지만, 해시 이벤트와 pushState를 모두 지원하는 CanJS을 사용하고 있습니다.
참고 : 제 질문은 Google의 hashbang 제안과 관련이 없으며 # (onhashchange)의 일반적인 사용에 대한 질문입니다.
여러 페이지가있는 경우 해시 태그를 통해 pushState를 사용하는 것이 좋습니다 (예 :/대시 보드/설정) 사용자가 페이지를 새로 고침 할 때 서버가 설정 페이지를 요청하고 있음을 읽을 수 있기 때문입니다. 서버가/대시 보드 # 설정을 사용하는 대신 해시 태그를 서버에 보내지 않기 때문에 사용자가 먼저 인덱스 페이지를로드해야만 설정 페이지가 렌더링되어 좋은 사용자 경험이 아닐 수 있습니다 지연이 있기 때문입니다. 또한 모달을 사용하려는 경우 쿼리 문자열 (예 :/dashboard)을 사용할 수 있습니다. modal = show –
해시 뱅 (hash bang)은 [거짓말]입니다. http://tumbledry.org/2011/05/12/screw_hashbangs_building). 사용하지 마십시오. – royhowie
그리고 오래된 브라우저 지원도 거짓말입니다. 사이트의 공용 부분은 레트로 브라우저에 대한 지원을 확대 할 수 있지만 "대시 보드"와 같은 응용 프로그램 (거의 항상이 브라우저를 업데이트해야하는 이유를 알고있는 사람들이 사용하는 응용 프로그램)은 최신의 안정적인 기능을 사용할 수 있습니다. 모두 모두 IE10 (2 세 이상) [지원] (http://caniuse.com/#search=pushState) history API – Tommi