Vue의 해시 라우팅과 히스토리 라우팅의 차이점에 대한 간략한 분석
Vue 또는 React와 같은 프런트엔드 렌더링을 사용할 때 일반적으로 해시 라우팅과 히스토리 라우팅이라는 두 가지 라우팅 방법이 있습니다. 그렇다면 이 두 가지 라우팅 방법의 차이점은 무엇입니까? 아래에 소개해드리도록 하겠습니다. 도움이 되셨으면 좋겠습니다!
해시 라우팅과 히스토리 라우팅 두 모드의 차이점을 다음과 같은 측면에서 정리해보자.
1. 외관
hash
: 즉, 주소의 # 기호. 예를 들어 URL: http://www.abc.com/#/hello
, hash
값은 #/hello
입니다. 해시가 URL에 나타나더라도 HTTP 요청에는 포함되지 않고 백엔드에 전혀 영향을 미치지 않으므로 해시를 변경해도 페이지가 다시 로드되지 않는 것이 특징입니다. [관련 권장 사항: "vue.js tutorialhash
: 即地址栏 URL 中的#
符号。 比如这个 URL:http://www.abc.com/#/hello
, hash
的值为 #/hello
。它的特点在于:hash 虽然出现在 URL 中, 但不会被包括在 HTTP 请求中,对后端完全没有影响,因此改变 hash 不会重新加载页面。【相关推荐:《vue.js教程》】
history
: 地址栏中没有 #
。比如这个 URL:http://www.abc.com/hello
,更美观,是个正常的url,适合推广宣传。
二、功能
history
: 在开发app的时候有分享页面,这个分享出去的页面就是用vue或是react做的,咱们把这个页面分享到第三方的app里,有的app里面url是不允许带有#
号的,所以要将#
号去除那么就要使用history模式,但是使用history模式还有一个问题就是,在访问二级页面的时候,做刷新操作,会出现404错误,那么就需要和后端人配合,让他配置一下apache或是nginx的url重定向,重定向到你的首页路由上就好了。
三、回车刷新
hash
: 虽然出现在 URL 中,但不会被包括在 HTTP 请求中,对后端完全没有影响,因此改变 hash 不会重新加载页面;-
history
: 利用了 HTML5 History Interface 中新增的pushState()
和replaceState()
方法。这两个方法应用于浏览器的历史记录栈,在当前已有的
back()
、forward()
、go()
方法的基础之上,这两个方法提供了对历史记录进行修改的功能。当使用这两个方法执行修改时,只能改变当前地址栏的 URL,但浏览器不会向后端发送请求,也不会触发popstate事件的执行,一般会出现404,这时候就需要和后端人配合,设置重定向。
四、使用场景
一般情况下,hash 和 history 都可以,如果你是个颜值控,对 #
符号夹杂在 URL 里有些不爽。
如果不想要很丑的 hash,我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成URL 跳转而无须重新加载页面。调用 history.pushState() 相比于直接修改 hash,存在以下优势:
pushState()
设置的新 URL 可以是与当前 URL 同源的任意 URL;而 hash 只可修改 # 后面的部分,因此只能设置与当前 URL 同文档的 URL;pushState()
设置的新 URL 可以与当前 URL 一模一样,这样也会把记录添加到栈中;而 hash 设置的新值必须与原来不一样才会触发动作将记录添加到栈中;ushState()
通过 stateObject 参数可以添加任意类型的数据到记录中;而 hash 只可添加短字符串pushState()
"]
역사
: 주소에 bar #
가 없습니다. 예를 들어 http://www.abc.com/hello
URL은 더 아름답고 일반 URL이므로 홍보에 적합합니다. 2. 기능
history
: 앱을 개발할 때 공유 페이지가 있는데, 이 공유 페이지를 공유합니다. 일부 앱에서는 URL에 #
번호를 포함하는 것이 허용되지 않으므로 #
번호를 제거하려면 다음을 수행해야 합니다. 기록 모드를 사용하지만 기록 모드 사용의 또 다른 문제는 보조 페이지에 액세스할 때 새로 고침 작업 중에 404 오류가 표시된다는 것입니다. 그런 다음 백엔드 담당자와 협력하여 아파치의 URL 리디렉션을 구성하도록 해야 합니다. nginx.Directing, 홈페이지 경로로 리디렉션하면 됩니다.
3. Enter를 눌러 새로고침하세요
-
hash
: URL에는 표시되지만 URL에는 포함되지 않습니다. HTTP 요청은 백엔드에 전혀 영향을 미치지 않으므로 해시를 변경해도 페이지가 다시 로드되지 않습니다.
-
history
: 새로운 pushState() HTML5 히스토리 인터페이스 > 및 <code>replaceState()
메소드의 code> 이 두 가지 메소드는 브라우저의 히스토리 스택에 적용되며, 현재 존재하는 back()
, forward()
, go()에 기반합니다. code> 메소드에서 이 두 가지 메소드는 과거 기록을 수정하는 기능을 제공합니다. 수정을 수행하기 위해 이 두 가지 방법을 사용하는 경우 <strong>현재 주소 표시줄의 URL만 변경할 수 있지만 브라우저는 백엔드에 요청을 보내지 않으며 일반적으로 404의 popstate 이벤트 실행을 트리거하지 않습니다. 이 때 리디렉션을 설정하려면 백엔드 담당자와 협력해야 합니다. </strong>🎜🎜
4. 사용 시나리오 🎜🎜일반적으로 해시와 히스토리 모두 허용됩니다. URL에 /code> 기호가 섞여 있어서 좀 불편하네요. 🎜🎜보기 흉한 해시를 원하지 않는 경우에는 History.pushState API를 최대한 활용하여 페이지를 다시 로드하지 않고도 URL 점프를 완료하는 라우팅 기록 모드를 사용할 수 있습니다. 해시를 직접 수정하는 것과 비교할 때, History.pushState()를 호출하면 다음과 같은 이점이 있습니다. 🎜
- 🎜
pushState()
새 URL 세트는 다음과 동일한 출처를 가진 모든 URL이 될 수 있습니다. 현재 URL; 해시는 # 뒤의 부분만 수정할 수 있으므로 현재 URL과 동일한 문서의 URL만 설정할 수 있습니다. 🎜🎜
- 🎜
pushState()
새 URL 설정; 현재 URL과 정확히 동일할 수 있으므로 레코드가 스택에 추가되는 작업을 트리거하려면 해시에 의해 설정된 새 값이 달라야 합니다. 🎜🎜
- 🎜
ushState()
는 stateObject 매개변수를 통해 전달될 수 있습니다. 레코드에 모든 유형의 데이터를 추가하세요. 반면 해시는 짧은 문자열 pushState()
만 추가할 수 있으며 추가적으로 나중에 사용하기 위한 title 속성입니다. 🎜🎜🎜🎜 5. 요약🎜🎜 전통적인 라우팅은 사용자가 URL에 액세스하면 해당 서버가 요청을 받은 다음 URL의 경로를 구문 분석하여 해당 처리 로직을 실행하여 경로 배포를 완료하는 것입니다. 🎜🎜프런트엔드 라우팅은 서버를 포함하지 않으며 해시 또는 HTML5 히스토리 API를 사용하여 프런트엔드에서 구현됩니다. 일반적으로 다양한 콘텐츠를 표시하고 전환하는 데 사용됩니다. 🎜🎜더 많은 프로그래밍 관련 지식을 보려면 🎜프로그래밍 비디오🎜를 방문하세요! ! 🎜
hash
: URL에는 표시되지만 URL에는 포함되지 않습니다. HTTP 요청은 백엔드에 전혀 영향을 미치지 않으므로 해시를 변경해도 페이지가 다시 로드되지 않습니다.
history
: 새로운 pushState() HTML5 히스토리 인터페이스 > 및 <code>replaceState()
메소드의 code> 이 두 가지 메소드는 브라우저의 히스토리 스택에 적용되며, 현재 존재하는 back()
, forward()
, go()에 기반합니다. code> 메소드에서 이 두 가지 메소드는 과거 기록을 수정하는 기능을 제공합니다. 수정을 수행하기 위해 이 두 가지 방법을 사용하는 경우 <strong>현재 주소 표시줄의 URL만 변경할 수 있지만 브라우저는 백엔드에 요청을 보내지 않으며 일반적으로 404의 popstate 이벤트 실행을 트리거하지 않습니다. 이 때 리디렉션을 설정하려면 백엔드 담당자와 협력해야 합니다. </strong>🎜🎜
- 🎜
pushState()
새 URL 세트는 다음과 동일한 출처를 가진 모든 URL이 될 수 있습니다. 현재 URL; 해시는 # 뒤의 부분만 수정할 수 있으므로 현재 URL과 동일한 문서의 URL만 설정할 수 있습니다. 🎜🎜 - 🎜
pushState()
새 URL 설정; 현재 URL과 정확히 동일할 수 있으므로 레코드가 스택에 추가되는 작업을 트리거하려면 해시에 의해 설정된 새 값이 달라야 합니다. 🎜🎜 - 🎜
ushState()
는 stateObject 매개변수를 통해 전달될 수 있습니다. 레코드에 모든 유형의 데이터를 추가하세요. 반면 해시는 짧은 문자열pushState()
만 추가할 수 있으며 추가적으로 나중에 사용하기 위한 title 속성입니다. 🎜🎜🎜🎜 5. 요약🎜🎜 전통적인 라우팅은 사용자가 URL에 액세스하면 해당 서버가 요청을 받은 다음 URL의 경로를 구문 분석하여 해당 처리 로직을 실행하여 경로 배포를 완료하는 것입니다. 🎜🎜프런트엔드 라우팅은 서버를 포함하지 않으며 해시 또는 HTML5 히스토리 API를 사용하여 프런트엔드에서 구현됩니다. 일반적으로 다양한 콘텐츠를 표시하고 전환하는 데 사용됩니다. 🎜🎜더 많은 프로그래밍 관련 지식을 보려면 🎜프로그래밍 비디오🎜를 방문하세요! ! 🎜
위 내용은 Vue의 해시 라우팅과 히스토리 라우팅의 차이점에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

vue.js에서 bootstrap 사용은 5 단계로 나뉩니다 : Bootstrap 설치. main.js.의 부트 스트랩 가져 오기 부트 스트랩 구성 요소를 템플릿에서 직접 사용하십시오. 선택 사항 : 사용자 정의 스타일. 선택 사항 : 플러그인을 사용하십시오.

HTML 템플릿의 버튼을 메소드에 바인딩하여 VUE 버튼에 함수를 추가 할 수 있습니다. 메소드를 정의하고 VUE 인스턴스에서 기능 로직을 작성하십시오.

vue.js의 시계 옵션을 사용하면 개발자가 특정 데이터의 변경 사항을들을 수 있습니다. 데이터가 변경되면 콜백 기능을 트리거하여 업데이트보기 또는 기타 작업을 수행합니다. 구성 옵션에는 즉시 콜백을 실행할지 여부와 DEEP를 지정하는 즉시 포함되며, 이는 객체 또는 어레이에 대한 변경 사항을 재귀 적으로 듣는 지 여부를 지정합니다.

vue.js는 이전 페이지로 돌아갈 수있는 네 가지 방법이 있습니다. $ router.go (-1) $ router.back () 사용 & lt; router-link to = & quot;/quot; Component Window.history.back () 및 메소드 선택은 장면에 따라 다릅니다.

VUE 멀티 페이지 개발은 vue.js 프레임 워크를 사용하여 응용 프로그램을 구축하는 방법입니다. 여기서 응용 프로그램은 별도의 페이지로 나뉩니다. 코드 유지 보수 : 응용 프로그램을 여러 페이지로 분할하면 코드를보다 쉽게 관리하고 유지 관리 할 수 있습니다. 모듈 식 : 각 페이지는 쉬운 재사용 및 교체를 위해 별도의 모듈로 사용할 수 있습니다. 간단한 라우팅 : 페이지 간의 탐색은 간단한 라우팅 구성을 통해 관리 할 수 있습니다. SEO 최적화 : 각 페이지에는 자체 URL이있어 SEO가 도움이됩니다.

NetflixusesAcustomFrameworkCalled "Gibbon"BuiltonReact, NotreactorVuedirectly.1) TeamExperience : 2) ProjectComplexity : vueforsimplerProjects, 3) CustomizationNeeds : reactoffersmoreflex.4)

vue.js가 트래버스 어레이 및 객체에 대한 세 가지 일반적인 방법이 있습니다. V- 결합 지시문은 V-FOR와 함께 사용하여 각 요소의 속성 값을 동적으로 설정할 수 있습니다. .MAP 메소드는 배열 요소를 새 배열로 변환 할 수 있습니다.

vue.js에서 JS 파일을 참조하는 세 가지 방법이 있습니다. & lt; script & gt; 꼬리표;; mounted () 라이프 사이클 후크를 사용한 동적 가져 오기; Vuex State Management Library를 통해 수입.
