목차
哈希模式(hash)
历史模式
如何解决前台刷新页面404问题
对单页面spa的应用理解
总结
vuejs 비디오 튜토리얼, 웹 프론트엔드 개발]🎜🎜아래와 같이🎜rrreee🎜특징: # 번호 뒤의 매개변수는 서버에 전송되지 않습니다. 호환성이 좋으며 경로의 일부로 서버에 전송되지 않습니다. HTTP 요청에 포함되어 있어 백엔드에는 전혀 영향을 미치지 않습니다. 단지 프론트엔드 학생들이 스스로 플레이하는 것뿐입니다.🎜🎜페이지가 새로고침되면 그대로 유지됩니다. 현재 페이지가 로드되지 않으며 다시 로드되지 않습니다🎜🎜해시 경로가 보기 흉하고 간결하지 않다고 생각한다면 history 모드를 최대한 활용하는 라우팅의 history 모드를 사용할 수 있습니다. >history.pushState API 또는 replaceState, 완료하려면 url페이지를 다시 로드하지 않고 점프🎜

기록 모드 " >해시 모드(해시) h2>🎜vue-routerurl의 해시(hash)를 사용하여 전체 URL을 시뮬레이션하는 hash 모드로 기본 설정됩니다. , URL이 변경되면 페이지가 다시 로드되지 않습니다. [관련 권장사항: vuejs 비디오 튜토리얼, 웹 프론트엔드 개발]🎜🎜아래와 같이🎜rrreee🎜특징: # 번호 뒤의 매개변수는 서버에 전송되지 않습니다. 호환성이 좋으며 경로의 일부로 서버에 전송되지 않습니다. HTTP 요청에 포함되어 있어 백엔드에는 전혀 영향을 미치지 않습니다. 단지 프론트엔드 학생들이 스스로 플레이하는 것뿐입니다.🎜🎜페이지가 새로고침되면 그대로 유지됩니다. 현재 페이지가 로드되지 않으며 다시 로드되지 않습니다🎜🎜해시 경로가 보기 흉하고 간결하지 않다고 생각한다면 history 모드를 최대한 활용하는 라우팅의 history 모드를 사용할 수 있습니다. >history.pushState API 또는 replaceState, 완료하려면 url페이지를 다시 로드하지 않고 점프🎜

기록 모드

포그라운드에서 페이지를 새로 고치는 404 문제를 해결하는 방법
응용 이해를 해결할 수 있습니다. 단일 페이지 스파
요약
웹 프론트엔드 View.js Vue의 두 가지 라우팅 모드(해시 및 기록)에 대해 이야기해 보겠습니다.

Vue의 두 가지 라우팅 모드(해시 및 기록)에 대해 이야기해 보겠습니다.

Apr 12, 2023 pm 05:50 PM
vue javascript 프런트 엔드

Vue의 두 가지 라우팅 모드(해시 및 기록)에 대해 이야기해 보겠습니다.

라우터에는 두 가지 모드가 있습니다. 하나는 hash 모드이고 다른 하나는 vue-cli를 사용할 때입니다. vue-router에 기본적으로 빌드된 vue 프로젝트, 특별한 구성이 없으면 기본값은 hash 모드입니다hash模式、另一种是history模式,在使用vue-cli以及vue-router默认搭建的vue项目,如果不做特殊的配置,默认就是hash模式

这两种模式各有自己的优势,但他们的使用区别,却多多少少都会在面试当中被问到

今天就一起来学习下

哈希模式(hash)

vue-router默认hash模式,使用url的哈希(hash)来模拟一个完整的URL,当URL改变时,页面不会重新加载。【相关推荐:vuejs视频教程web前端开发

如下所示

http://localhost/#home
로그인 후 복사

特点: #号后面的参数不会传送给服务器,兼容性好,不会作为路径的一部分发送给服务器,也就是它不会包括在HTTP请求体中,对后端完全没有影响,只是我们前端同学自己玩

页面刷新时,会停留在当前页面,不会重新加载

如果觉得hash路径很丑,不简洁,我们可以用路由的history模式,这种模式充分利用history.pushState APIreplaceState,来完成,url跳转而无需重新加载页面

历史模式

history模式:在实例化配置对象中添加mode模式,值为historyhash模式就会变成history模式

const router = new VueRouter({
  mode: 'history',
  routes: [...]
})
로그인 후 복사

这两种方式的使用都是没啥问题的,如果你在意浏览器url的颜值,#符号掺杂在url里看起来确实有些不优雅

如果你想url更好看,那么就使用history模式

但是:在hash模式下,使用hash符号之前的内容会被包含在请求体中,#号后面的不会发送给服务器

history模式下,前端的URL必须和实际向后端发起请求的URL保持一致

如:https://itclan.cn/fontend/id,如果后端缺少没有对/fontend/id的路由处理,那么它将返回404错误

如果你想要支持history模式,那么需要后端同学支持,想要彻底解决404的问题,需要与后端同学协商,因为需要后端与前端路由做匹配

在服务端增加一个覆盖所有情况的时候的候选资源,如果url匹配不到任何静态资源,应该返回一个首页页面

如果出现404,容易让用户觉得这是一个Bug

如何解决前台刷新页面404问题

解决这个问题:如果你用的是Node做后端服务,那么在Node后台中可以加入一个中间件比如:connect-history-api-fallback即可解决这种404问题

如果是javaphp,找后端同学,让后端路由与前端路由做匹配,或是用Ngnix做中间代理

如下这段简易的Node服务代码,可以命名为server.js,同时安装express以及connect-history-api-fallback中间件

启动后端服务执行命令node server.js

const express = require('express');
const history = require('connect-history-api-fallback')

const app = express()
app.use(history())
app.use(express.static(__dirname+'/static'));


app.listen(5005,(err)=> {
  if(!err)consle.log('服务器启动成功了')
})
로그인 후 복사

把前端打包生成的dist文件内的代码,放到static中,通过这一操作,即可解决刷新页面,404的问题

对单页面spa的应用理解

我们的前端使用的vue-router中的两种模式,就是单页面应用,整个应用只有一个router路由器,是可以通过$router属性获取到

也就是说,整个应用只有一个完整的页面,同时,点击页面中的导航链接,不会刷新页面,只会是页面的局部更新

而我们页面中的数据,往往需要通过ajax请求来获取

现在开发的新项目,都是前后端分离,基本上都是单页面应用

总结

前端路由,有两种模式,一种是hash模式,另一种是history模式,其中hash模式是默认模式,#后面的不会发送给服务端,不会重新刷新加载页面,而history模式,url虽然比较好看,但是想要完整支持,需要后端同学提供支持,后端路由与前端的路由需要做匹配

否则部署到线上,一刷新页面,会出现404이 두 모드 나름의 장점이 있지만 사용법의 차이는 면접 때 어느 정도 물어볼 것입니다

🎜오늘 함께 배워볼까요🎜

해시 모드(해시) h2>🎜vue-routerurl의 해시(hash)를 사용하여 전체 URL을 시뮬레이션하는 <code>hash 모드로 기본 설정됩니다. , URL이 변경되면 페이지가 다시 로드되지 않습니다. [관련 권장사항: vuejs 비디오 튜토리얼, 웹 프론트엔드 개발]🎜🎜아래와 같이🎜rrreee🎜특징: # 번호 뒤의 매개변수는 서버에 전송되지 않습니다. 호환성이 좋으며 경로의 일부로 서버에 전송되지 않습니다. HTTP 요청에 포함되어 있어 백엔드에는 전혀 영향을 미치지 않습니다. 단지 프론트엔드 학생들이 스스로 플레이하는 것뿐입니다.🎜🎜페이지가 새로고침되면 그대로 유지됩니다. 현재 페이지가 로드되지 않으며 다시 로드되지 않습니다🎜🎜해시 경로가 보기 흉하고 간결하지 않다고 생각한다면 history 모드를 최대한 활용하는 라우팅의 history 모드를 사용할 수 있습니다. >history.pushState API 또는 replaceState, 완료하려면 url페이지를 다시 로드하지 않고 점프🎜

기록 모드

🎜history 모드: 인스턴스화된 구성 객체 모드 모드에 를 추가합니다. 값은 <code>history입니다. 수정 후에는 hash 모드가 history 모드가 됩니다🎜rrreee🎜브라우저에 신경쓰시면 이 두 가지 방법을 사용하는데 문제가 없습니다 의 모습 url, url# 기호가 섞여 있으면 좀 촌스러워 보이죠🎜🎜url을 바꾸고 싶다면 괜찮아 보이는데, 그런 다음 history 모드를 사용하세요🎜🎜하지만: hash 모드에서는 hash 기호를 사용하기 전의 내용이 요청 본문에 포함됩니다. # 번호 뒤에 오는 내용은 서버로 전송되지 않습니다🎜🎜그리고 기록 모드에서는 프런트 엔드의 URL이 다음과 같아야 합니다. 백엔드 URL에 대한 실제 요청과 동일하게 일관되게 유지됩니다🎜🎜예: https://itclan.cn/fontend/id, 백엔드가 누락된 경우 해당 /fontend/id 라우팅 처리가 없으면 404 오류가 반환됩니다🎜🎜history 모드를 지원하려면 다시 지원해야 합니다 -end 지원 404 문제를 완전히 해결하려면 백엔드 급우들과 협상이 필요합니다. 백엔드와 프론트엔드 경로를 일치시키는 것이 필요하기 때문입니다🎜🎜후보 추가 url이 일치할 수 없는 경우 모든 상황을 처리하기 위해 서버의 리소스 모든 정적 리소스는 홈 페이지를 반환해야 합니다🎜🎜404가 나타나면 사용자는 이것이 버그라고 생각하기 쉽습니다🎜

포그라운드에서 페이지를 새로 고치는 404 문제를 해결하는 방법

🎜이 질문 해결: Node를 백엔드 서비스로 사용하는 경우 connect-history-api-fallback과 같은 미들웨어를 Node 배경에 추가하면 이 404 문제를 해결할 수 있습니다🎜🎜java인 경우 또는 php, 백엔드 라우팅을 프런트엔드 라우팅과 일치시킬 백엔드 동급생을 찾거나 중간 프록시 역할을 하는 Ngnix를 사용하세요🎜🎜다음은 server.js로 이름을 지정하고 express 및 <code>connect-history-api 설치할 수 있는 간단한 <code>노드 서비스 코드 -fallback middleware🎜🎜백엔드 서비스 실행 명령 시작 node server.js🎜rrreee🎜프론트엔드에서 생성된 패키지 dist에 코드 넣기 파일을 static으로 변환합니다. 이 작업을 통해 페이지 새로 고침 문제와 404🎜

응용 이해를 해결할 수 있습니다. 단일 페이지 스파

🎜프런트 엔드에서 사용하는 vue-router의 두 가지 모드는 단일 페이지 애플리케이션이며 전체 애플리케이션에는 라우터가 하나만 있습니다. 라우터는 $router 속성을 ​​통해 얻을 수 있습니다. 즉, 전체 애플리케이션에는 단 하나의 완전한 페이지만 있습니다. 동시에 페이지에서 탐색 링크를 클릭하면 페이지가 새로 고쳐지지 않습니다. 페이지는 부분적으로만 업데이트됩니다🎜🎜그리고 우리 페이지의 데이터는 ajax 요청을 통해 얻어야 하는 경우가 많습니다🎜🎜현재 개발된 새 프로젝트는 기본적으로 프런트엔드와 백엔드가 모두 분리되어 있습니다. 단일 페이지 애플리케이션🎜

요약

🎜프런트 엔드 라우팅에는 두 가지 모드가 있습니다. 하나는 hash 모드이고 다른 하나는 입니다. 히스토리 모드, hash 모드가 기본 모드인 경우 다음 #는 서버로 전송되지 않으며 로딩 페이지가 새로 고쳐지지 않습니다. history 모드, url이 더 좋아 보이지만 완전한 지원을 원한다면 백엔드 라우팅과 프런트엔드 라우팅이 필요합니다. to match🎜🎜 그렇지 않으면 온라인으로 배포하고 페이지를 새로 고치면 404 문제가 발생합니다🎜

(학습 영상 공유: vuejs 입문 튜토리얼, 기본 프로그래밍 영상)

위 내용은 Vue의 두 가지 라우팅 모드(해시 및 기록)에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

vue에서 echart를 사용하는 방법 vue에서 echart를 사용하는 방법 May 09, 2024 pm 04:24 PM

Vue에서 ECharts를 사용하면 애플리케이션에 데이터 시각화 기능을 쉽게 추가할 수 있습니다. 특정 단계에는 ECharts 및 Vue ECharts 패키지 설치, ECharts 소개, 차트 구성 요소 생성, 옵션 구성, 차트 구성 요소 사용, Vue 데이터에 반응하는 차트 만들기, 대화형 기능 추가 및 고급 사용법이 포함됩니다.

vue에서 내보내기 기본값의 역할 vue에서 내보내기 기본값의 역할 May 09, 2024 pm 06:48 PM

질문: Vue에서 내보내기 기본값의 역할은 무엇입니까? 자세한 설명: 내보내기 기본값은 구성 요소의 기본 내보내기를 정의합니다. 가져올 때 구성 요소를 자동으로 가져옵니다. 가져오기 프로세스를 단순화하고 명확성을 높이며 충돌을 방지합니다. 개별 구성 요소를 내보내고, 명명된 내보내기와 기본 내보내기를 모두 사용하고, 전역 구성 요소를 등록하는 데 일반적으로 사용됩니다.

Vue에서 지도 기능을 사용하는 방법 Vue에서 지도 기능을 사용하는 방법 May 09, 2024 pm 06:54 PM

Vue.js 맵 함수는 각 요소가 원래 배열의 각 요소를 변환한 결과인 새 배열을 생성하는 내장된 고차 함수입니다. 구문은 map(callbackFn)입니다. 여기서 callbackFn은 배열의 각 요소를 첫 번째 인수로 받고 선택적으로 인덱스를 두 번째 인수로 받아 값을 반환합니다. map 함수는 원래 배열을 변경하지 않습니다.

vue에서 onmounted의 역할 vue에서 onmounted의 역할 May 09, 2024 pm 02:51 PM

onMounted는 Vue의 구성 요소 마운팅 라이프 사이클 후크입니다. 해당 기능은 DOM 요소에 대한 참조 가져오기, 데이터 설정, HTTP 요청 전송, 이벤트 리스너 등록 등과 같은 구성 요소가 DOM에 마운트된 후 초기화 작업을 수행하는 것입니다. 구성 요소가 마운트될 때 한 번만 호출됩니다. 구성 요소가 업데이트된 후 또는 삭제되기 전에 작업을 수행해야 하는 경우 다른 수명 주기 후크를 사용할 수 있습니다.

vue에서 내보내기와 내보내기 기본값의 차이점 vue에서 내보내기와 내보내기 기본값의 차이점 May 08, 2024 pm 05:27 PM

Vue.js에서 모듈을 내보내는 방법에는 내보내기와 기본값 내보내기라는 두 가지 방법이 있습니다. 내보내기는 명명된 엔터티를 내보내는 데 사용되며 중괄호를 사용해야 합니다. 내보내기 기본값은 기본 엔터티를 내보내는 데 사용되며 중괄호가 필요하지 않습니다. 가져올 때 내보내기로 내보낸 엔터티는 해당 이름을 사용해야 하는 반면, 내보내기 기본값으로 내보낸 엔터티는 암시적으로 사용될 수 있습니다. 여러 번 가져와야 하는 모듈에는 내보내기 기본값을 사용하고, 한 번만 내보내는 모듈에는 내보내기를 사용하는 것이 좋습니다.

Vue의 후크는 무엇입니까 Vue의 후크는 무엇입니까 May 09, 2024 pm 06:33 PM

Vue 후크는 특정 이벤트 또는 수명 주기 단계에서 작업을 수행하는 콜백 함수입니다. 여기에는 수명 주기 후크(예: beforeCreate, 마운트, beforeDestroy), 이벤트 처리 후크(예: 클릭, 입력, 키다운) 및 사용자 정의 후크가 포함됩니다. 후크는 구성 요소 제어를 강화하고 구성 요소 수명 주기에 응답하며 사용자 상호 작용을 처리하고 구성 요소 재사용성을 향상시킵니다. 후크를 사용하려면 후크 함수를 정의하고 로직을 실행한 후 선택적 값을 반환하면 됩니다.

vue의 이벤트 수정자를 어떤 시나리오에 사용할 수 있나요? vue의 이벤트 수정자를 어떤 시나리오에 사용할 수 있나요? May 09, 2024 pm 02:33 PM

Vue.js 이벤트 수정자는 다음을 포함한 특정 동작을 추가하는 데 사용됩니다. 기본 동작 방지(.prevent) 이벤트 버블링 중지(.stop) 일회성 이벤트(.once) 이벤트 캡처(.capture) 수동 이벤트 수신(.passive) 적응형 수정자(.self)키 수정자(.key)

vue에 마운트된 것은 반응의 수명 주기에 해당합니다. vue에 마운트된 것은 반응의 수명 주기에 해당합니다. May 09, 2024 pm 01:42 PM

Vue의 onMounted는 React의 useEffect 수명 주기 메서드에 해당하며 빈 종속성 배열 []이 있으며 구성 요소가 DOM에 마운트된 직후에 실행됩니다.

See all articles