javascript - js 고급 프로그램의 문제
黄舟
黄舟 2017-07-05 11:07:56
0
4
1001

고급 자바스크립트 프로그래밍(3판) 492페이지를 보다가 궁금한 점이 생겼습니다

"가짜" URL을 사용하고 새로 고치면 404 오류가 반환됩니다. 웹 서버에 이와 같은 실제 링크가 없으면 사용자는 필연적으로 페이지를 새로 고쳐야 할까요? 진짜 링크에 해당하는 파일인데 pushState() 사용법이 많이 불편하지 않나요

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

모든 응답(4)
淡淡烟草味

pushState SPA 애플리케이션에서 주로 사용되며 질문에 답하기 위해:

404가 나타납니다. 이는 PushState 모드의 URL에 #이 없기 때문입니다. 브라우저는 실제로 서버에 대한 요청을 시작하지만 서버에는 이 경로에 해당하는 리소스가 없습니다.

하지만 서버에 실제 링크가 있을 필요는 없으며(사람들이 지쳐서 죽게 됩니다) 존재하지 않는 페이지(404)가 루트 경로로 리디렉션되도록 서버 구성을 변경하기만 하면 됩니다.

Tomcat을 예로 들면 구성은 매우 간단합니다. 프로젝트의 web.xml에 다음 구성을 추가하기만 하면 됩니다. 으아악

이러한 방식으로 Tomcat은 리소스를 찾을 수 없는 모든 경로를 루트 경로로 리디렉션하므로 각도/vue/react/backbone이든 프런트엔드 프레임워크가 요청된 URL을 프런트에서 자체적으로 처리할 수 있습니다. -끝.

nginx/apache/IIS와 같은 다른 유형의 서버에 대해서는 다음 문서를 참조하세요: https://github.com/angular-ui...

출처: https://my.oschina.net/mumu/b...

过去多啦不再A梦

새로고침을 누르면 현재 브라우저의 URL이 포함된 요청이 서버로 전송됩니다.

예를 들어 pushState()를 통해 현재 주소를 boomshaklaka.com/boom으로 변경하면
새로고침을 클릭한 후 서버는 이 주소를 수신하고 존재하지 않는 것을 발견하면 404를 반환합니다.

漂亮男人

먼저 프론트엔드 라우팅과 백엔드 라우팅의 차이점을 이해해야 합니다.

백엔드 라우팅만 하는 경우 요청한 모든 페이지는 백엔드에서 반환됩니다. 이때 모든 라우팅은 백엔드에 의해 제어됩니다.

때때로 페이지를 새로 고치고 싶지 않은데 URL이 SPA 애플리케이션과 같이 변경되기를 원할 때도 있습니다. 이때 프런트엔드 라우팅이 필요하며 여기서는 pushState가 이 역할을 합니다.

某草草

우선, 저는 여전히 백그라운드에서 라우팅을 처리하는 데 익숙합니다. 백그라운드 라우팅을 예로 들어 보겠습니다.

우선, URL은 임의로 정의할 수 있습니다. 프로젝트에서 어떤 파일을 연결할지는 귀하에게 달려 있습니다.

으아악

다른 작업이 동일한 페이지를 가리킬 수 있으므로 웹사이트에 페이지가 하나 이상 있어야 합니다

두 번째:

HTML 파일에서 History.pushState() 메서드는 브라우저 기록에 상태를 추가합니다.

앵커 포인트를 설정하는 데 더 많이 사용되는 내용:

으아악

기사에 언급된 404는 여전히 라우팅 방향에 문제가 있고 리소스를 찾을 수 없기 때문에 그렇습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿