찾다
웹 프론트엔드View.jsVue의 두 가지 라우팅 모드(해시 및 기록)에 대해 이야기해 보겠습니다.

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으로 문의하시기 바랍니다. 삭제
vue.js vs. 백엔드 프레임 워크 : 구별을 명확하게합니다vue.js vs. 백엔드 프레임 워크 : 구별을 명확하게합니다Apr 25, 2025 am 12:05 AM

vue.js는 프론트 엔드 프레임 워크이며 백엔드 프레임 워크는 서버 측 로직을 처리하는 데 사용됩니다. 1) vue.js는 사용자 인터페이스를 구축하는 데 중점을두고 구성 요소화 및 반응 형 데이터 바인딩을 통해 개발을 단순화합니다. 2) Express 및 Django와 같은 백엔드 프레임 워크는 HTTP 요청, 데이터베이스 작업 및 비즈니스 로직을 처리하고 서버에서 실행됩니다.

vue.js 및 프론트 엔드 스택 : 연결 이해vue.js 및 프론트 엔드 스택 : 연결 이해Apr 24, 2025 am 12:19 AM

Vue.js는 개발 효율성과 사용자 경험을 향상시키기 위해 프론트 엔드 기술 스택과 밀접하게 통합되어 있습니다. 1) 건설 도구 : 모듈 식 개발을 달성하기 위해 웹 팩 및 롤업과 통합. 2) 주 관리 : Vuex와 통합하여 복잡한 응용 프로그램 상태를 관리합니다. 3) 라우팅 : vuerouter와 통합하여 단일 페이지 응용 프로그램 라우팅을 실현합니다. 4) CSS 전 처리기 : 스타일 개발 효율성을 향상시키기 위해 SASS를 지원하고 덜 지원합니다.

Netflix : React (또는 기타 프레임 워크)의 사용 탐색Netflix : React (또는 기타 프레임 워크)의 사용 탐색Apr 23, 2025 am 12:02 AM

Netflix는 React의 구성 요소 설계 및 가상 DOM 메커니즘이 복잡한 인터페이스와 빈번한 업데이트를 효율적으로 처리 할 수 ​​있기 때문에 REACT를 선택했습니다. 1) 구성 요소 기반 설계를 통해 Netflix는 인터페이스를 관리 가능한 위젯으로 분류하여 개발 효율성 및 코드 유지 관리를 향상시킬 수 있습니다. 2) 가상 DOM 메커니즘은 DOM 운영을 최소화하여 Netflix 사용자 인터페이스의 부드러움과 고성능을 보장합니다.

vue.js and the frontend : 프레임 워크에 대한 깊은 다이빙vue.js and the frontend : 프레임 워크에 대한 깊은 다이빙Apr 22, 2025 am 12:04 AM

Vue.js는 사용하기 쉽고 강력하기 때문에 개발자에게 사랑을받습니다. 1) 반응 형 데이터 바인딩 시스템은 뷰를 자동으로 업데이트합니다. 2) 구성 요소 시스템은 코드의 재사용 성과 유지 관리를 향상시킵니다. 3) 컴퓨팅 속성 및 청취자는 코드의 가독성과 성능을 향상시킵니다. 4) vuedevtools를 사용하고 콘솔 오류를 확인하는 것이 일반적인 디버깅 기술입니다. 5) 성능 최적화에는 주요 속성, 계산 된 속성 및 유지 구성 요소 사용이 포함됩니다. 6) 모범 사례에는 명확한 구성 요소 이름 지정, 단일 파일 구성 요소 사용 및 수명주기 후크의 합리적인 사용이 포함됩니다.

프론트 엔드의 vue.js의 힘 : 주요 기능 및 이점프론트 엔드의 vue.js의 힘 : 주요 기능 및 이점Apr 21, 2025 am 12:07 AM

vue.js는 효율적이고 유지 관리 가능한 프론트 엔드 애플리케이션을 구축하는 데 적합한 점진적인 JavaScript 프레임 워크입니다. 주요 기능은 다음과 같습니다. 1. 응답 데이터 바인딩, 2. 구성 요소 개발, 3. 가상 Dom. 이러한 기능을 통해 vue.js는 개발 프로세스를 단순화하고 응용 프로그램 성능과 유지 관리를 향상시켜 현대 웹 개발에서 매우 인기가 있습니다.

vue.js가 React보다 낫습니까?vue.js가 React보다 낫습니까?Apr 20, 2025 am 12:05 AM

vue.js와 반응은 각각 고유 한 장점과 단점이 있으며, 선택은 프로젝트 요구 사항 및 팀 조건에 따라 다릅니다. 1) vue.js는 단순하고 사용하기 쉬운 소규모 프로젝트 및 초보자에게 적합합니다. 2) REACT는 풍부한 생태계와 구성 요소 설계로 인해 대규모 프로젝트 및 복잡한 UI에 적합합니다.

vue.js의 기능 : 프론트 엔드에서 사용자 경험 향상vue.js의 기능 : 프론트 엔드에서 사용자 경험 향상Apr 19, 2025 am 12:13 AM

vue.js는 여러 기능을 통해 사용자 경험을 향상시킵니다. 1. 응답 시스템은 실시간 데이터 피드백을 실현합니다. 2. 구성 요소 개발은 코드 재사용 성을 향상시킵니다. 3. Vuerouter는 원활한 내비게이션을 제공합니다. 4. 동적 데이터 바인딩 및 전환 애니메이션은 상호 작용 효과를 향상시킵니다. 5. 오류 처리 메커니즘은 사용자 피드백을 보장합니다. 6. 성능 최적화 및 모범 사례는 응용 프로그램 성능을 향상시킵니다.

vue.js : 웹 개발에서 역할을 정의합니다vue.js : 웹 개발에서 역할을 정의합니다Apr 18, 2025 am 12:07 AM

웹 개발에서 vue.js의 역할은 개발 프로세스를 단순화하고 효율성을 향상시키는 점진적인 JavaScript 프레임 워크 역할을하는 것입니다. 1) 개발자는 반응 형 데이터 바인딩 및 구성 요소 개발을 통해 비즈니스 로직에 집중할 수 있습니다. 2) vue.js의 작동 원리는 반응 형 시스템 및 가상 DOM에 의존하여 성능을 최적화합니다. 3) 실제 프로젝트에서는 Vuex를 사용하여 글로벌 상태를 관리하고 데이터 대응 성을 최적화하는 것이 일반적입니다.

See all articles

핫 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 옷 제거제

Video Face Swap

Video Face Swap

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

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기