2016-08-09 2 views
1

here의 Angular 2.0 문서는 "HTML 5 URL"의 사용을 맹목적으로 말합니다. 기본적으로 "#" 단일 페이지 앱에"HTML 5 URL"을 사용할 때 브라우저가 angular 2.0 앱을 실행하는 방법을 알고 있는지 여부

#을 사용하는 이전 방법에서는 # 변경 후 브라우저가 서버를 호출하지 않습니다.

"HTML 5 URL"을 사용하는 새로운 방법으로 브라우저가 서버에 전화를 걸지 여부를 어떻게 알 수 있습니까?

제 질문은 다음과 같은 경험에서 영감을 얻었습니다.

내가 localhost를 입력하면 : 내가 내부 router.navigate [ '/ 로그인']이 있으면 직접 브라우저의 주소 표시 줄에 3000/로그인을하고 Enter 키를 누르은, 브라우저는

그러나 내 노드 서버로 이동 내 각도 2.0 응용 프로그램은 노드 서버로 이동하지 않으며 클라이언트 측에있는보기를 표시합니다. 하지만 여전히 브라우저에 주소 표시 줄에 localhost : 3000/login을 표시합니다.

다음에 즉시 새로 고침을 누르면 노드 서버로 다시 이동하려고 시도합니다.

업데이트

우리가 상세 구성 요소 및 디스플레이 "Magneta"로 이동하는 라우터를 말한다면 link

에 각도 2.0 튜토리얼에서 가져온 다음, 우리는 (영웅 ID를 기대

로컬 호스트 : 3000/영웅/15

) 다음과 같이 브라우저 URL에 표시

사용자가 URL을 브라우저 주소 표시 줄에 입력하면 라우터는 패턴을 인식하고 "Magneta"세부보기으로 이동해야합니다.

나는 크롬을 사용하고 있습니다.

답변

1

브라우저는 링크를 클릭하거나 URL 표시 줄에 URL을 입력하거나 JS에서 XMLHttpRequest를 작성하여 페이지를로드 할 때만 서버를 호출합니다.

router.navigate['/login']은 Angular2 라우터에서 처리합니다. 서버는 그 목적이 아니기 때문에 서버를 호출 할 이유가 없습니다.
그냥 페이지를 다시로드하지 않는 브라우저 pushState API를 사용하여 URL 표시 줄에 표시된 URL을 업데이트합니다.

+0

Angular 2.0 문서 (업데이트 된 질문에서 굵은 글씨로 보임)는 "사용자가 해당 URL을 브라우저 주소 표시 줄에 입력하면 라우터가 패턴을 인식하고 동일한"Magneta "세부 정보보기로 이동해야합니다." 나는 그들의 튜토리얼에서 그것을 시도하고 주소창을 바꿀 때 실제로 서버에 가지 않는 것 같다. 그것에 대해 어떻게 생각하세요? 감사합니다. – abdullam

+0

이전에 입력 한 URL이 페이지 변경으로 간주되지 않는 경우 브라우저에 수동으로 입력 한 URL에 대한 몇 가지 추가 규칙이 있다고 생각합니다. –

+0

그래서 "#"로 돌아 가면 수동으로 입력 한 URL을 지원할 수있는 유일한 방법이라고 생각하십니까? 나는 노드 서버를 가지고있다. – abdullam

관련 문제