vue前端路由的两种模式,hash与history的区别
1.直观区别:
hash模式url带#号,history模式不带#号。
2.深层区别:
hash模式url里面永远带着#号,我们在开发当中默认使用这个模式。
如果用户考虑url的规范那么就需要使用history模式,因为history模式没有#号,是个正常的url适合推广宣传
功能也有区别,比如我们在开发app的时候有分享页面,那么这个分享出去的页面就是用vue或是react做的,
咱们把这个页面分享到第三方的app里,有的app里面url是不允许带有#号的,所以要将#号去除那么就要使用history模式
但是使用history模式还有一个问题就是,在访问二级页面的时候,做刷新操作,会出现404错误,那么就需要和后端人配合让他配置一下apache或是nginx的url重定向,重定向到你的首页路由上就ok啦。
3. 路由模式配置:
1 export default new Router({
2 // mode: 'history',
3 mode: 'hash',
4 routes
5 })
如果是 history模式需要后端配合解决刷新404问题 这里以Node 后台为例:
1 const Koa = require('koa')
2 const Router = require('koa-router');
3 const static = require('koa-static')
4 const fs = require('fs');
5 const app = new Koa();
6 const router = new Router();
7
8 let str;
9 fs.readFile('../dist/index.html', "utf-8", (err, data) => {
10 if (err) {
11 ctx.body = "error found"
12 }
13 str = data.toString();
14 })
15
16 // 解决vue 路由在 history刷新 404情况
17 router.get('*', async(ctx, next) => {
18 if (ctx.url !== "/index.html") {
19 console.log("在这里返回")
20 ctx.body = str;
21 }
22 })
23
24 app.use(static("../dist/"));
25 app.use(router.routes()) //启动路由
26 app.use(router.allowedMethods());
27
28
29 app.listen(8989, () => {
30 console.log("监听服务器地址:127.0.0.1:8989");
31 })
vue前端路由的两种模式,hash与history的区别的更多相关文章
- 前端路由的两种模式:hash(#)模式和history模式(转)
随着 ajax 的使用越来越广泛,前端的页面逻辑开始变得越来越复杂,特别是spa的兴起,前端路由系统随之开始流行. 从用户的角度看,前端路由主要实现了两个功能(使用ajax更新页面状态的情况下): 记 ...
- vue路由的两种模式配置以及history模式下面后端如何配置
vue路由的两种模式配置以及history模式下面后端如何配置 1.hash ——即地址栏URL中的#符号.hash 虽然出现URL中,但不会被包含在HTTP请求中,对后端完全没有影响,因此改变has ...
- 前端路由的两种模式: hash 模式和 history 模式
随着 ajax 的使用越来越广泛,前端的页面逻辑开始变得越来越复杂,特别是spa的兴起,前端路由系统随之开始流行. 从用户的角度看,前端路由主要实现了两个功能(使用ajax更新页面状态的情况下): 记 ...
- 浅析使用vue-router实现前端路由的两种方式
关于vue-router 由于最近的项目中一直在使用vue,所以前端路由方案也是使用的官方路由vue-router,之前在angularJS项目中也是用过UI-router,感觉大同小异,不过很显然v ...
- 【源码拾遗】从vue-router看前端路由的两种实现
本文由浅入深观摩vue-router源码是如何通过hash与History interface两种方式实现前端路由,介绍了相关原理,并对比了两种方式的优缺点与注意事项.最后分析了如何实现可以直接从文件 ...
- vue路由的两种模式,hash与history
对于Vue 这类渐进式前端开发框架,为了构建SPA(单页面应用),需要引入前端路由系统,这也就是Vue-router存在的意义.前端路由的核心,就在于——— 改变视图的同时不会向后端发出请求. 一.为 ...
- Vue-router(前端路由)的两种路由模式
Vue的两种路由模式: hash.history:默认是hash模式: 前端路由(改变视图的同时不会向后端发出请求) 一.什么是hash模式和history模式? hash模式:是指url尾巴后的#号 ...
- vue--前端路由及vue-router两种模式
前言 路由这个概念最早在后端出现,随后前后端分离,直至当今的单页面应用,路由也在一直发生变化.本文来总结一下路由变化和vue-router中的路由模式区别相关知识点. 正文 1.什么是前端路由 (1) ...
- 四、vue前端路由(轻松入门vue)
轻松入门vue系列 Vue前端路由 七.Vue前端路由 1. 路由的基本概念与原理 后端路由 前端路由 实现简单的前端路由 vue-router基本概念 2. vue-router的基本使用 基本使用 ...
- vue-router的两种模式的区别
众所周知,vue-router有两种模式,hash模式和history模式,这里来谈谈两者的区别. ### hash模式 hash模式背后的原理是`onhashchange`事件,可以在`window ...
随机推荐
- 博弈论练习6 Deleting Divisors(sg找规律,思维)
题目链接在这里:G-Deleting Divisors_牛客竞赛博弈专题班组合游戏基本概念.对抗搜索.Bash游戏.Nim游戏习题 (nowcoder.com) 这道题一道比较明显的思路是使用sg函数 ...
- java 转换指定文件夹文件编码工具
import java.io.*; public class test { public static void main(String[] args) { printFiles(new File(& ...
- 3DMAX2018安装
1.下载3DMAX2018安装包并解压 2.打开解压后的文件点击Setup 选择语言和安装位置点击下一步 安装完成后点击enter a serial number 输入序列号066-66666666, ...
- 使用react-vite-antd,修改antd主题,报错 [vite] Internal server error: Inline JavaScript is not enabled. Is it set in your options? It is hacky way to make this function will be compiled preferentially by less
一般报错 在官方文档中,没有关于vite中如何使用自定义主题的相关配置,经过查阅 1.安装less yarn add less (已经安装了就不必再安装) 2.首先将App.css改成App.les ...
- NSIS 将一整个文件夹拷贝
在做安装包的时候,有时候需要将文件夹以及文件夹下面所包含的所有文件夹和文件都拷贝到目标文件夹,一下有两种方法可以连同文件夹一起拷贝: 各文件的位置如下: 其中src 文件夹下的文件如下: 一开始dst ...
- Java 面试手撕代码
1. 判断括号有效性 public static boolean fun5(String str) { HashMap<Character, Character> hashMap = ne ...
- 对于利用JavaBean+Servlet+jsp实现增删改查功能题目的实现
首先,为了更好地规范代码,可以分别将不同用处的Java文件放置到不同的文件夹里面 对于实体类,可以放在名为Bean的package里面 对于中间用来实现Java与jsp页面交互的类,可以放在名为Ser ...
- 淘宝商品页面的爬取.py(亲测有效)
import requests def getHTMLText(url): try: r = requests.get(url,timeout=30) r.raise_for_status() #如果 ...
- Go接入kafka
需要借助的库 github.com/Shopify/sarama // kafka主要的库* github.com/bsm/sarama-cluster // kafka消费组 生产者 package ...
- noopener, noreferrer 及 nofollow 的用法
<a> 标签通常会配合着使用 noopener, noreferrer 及 nofollow 这些属性, 它们的作用及用法如下. noopener 当给链接加上 target=" ...