vue中路由模式

hash 和 history 的原理和区别:

hash模式是通过监听浏览器的onhashchange()事件变化,查找对应的路由规则

history是利用history中新增的两个API pushState()和 replaceState() 和一个事件onpopstate监听URL的变化history模式

vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载。而history模式下会重新加载页面。所以会导致history没有服务器的支持,url改变的时候会报404。

怎么解决呢?

在服务端增加一个覆盖所有情况的候选资源:如果 URL 匹配不到任何静态资源,则应该返回同一个 index.html 页面,这个页面就是你 app 依赖的页面。

以下是nigx的配置的样例:

location / {
  try_files $uri $uri/ /index.html;
}

 history和hash还有一个区别就是hash模式会在url里面加一个—— #(井号)也叫锚点。history相比之下没有锚点更简洁。

Vue路由的实现方式有两种:hash模式history模式。 1. hash模式 在hash模式下,路由信息会保存在URL的hash,以#号开头。例如:http://localhost:8080/#/home。Vue Router会监听URL的变化,当URL的hash发生变化时,会根据新的hash值切换到对应的组件。 2. history模式history模式下,路由信息会保存在浏览器的历史记录。例如:http://localhost:8080/home。Vue Router会使用HTML5的History API来实现路由切换。在history模式下,URL不再需要#号,看起来更加清晰。 在Vue使用路由,需要引入Vue Router,然后定义路由规则和对应的组件。最后在Vue实例挂载Vue Router。 例如: ``` import Vue from 'vue' import Router from 'vue-router' import Home from '@/components/Home' import About from '@/components/About' Vue.use(Router) export default new Router({ mode: 'history', routes: [ { path: '/', name: 'home', component: Home }, { path: '/about', name: 'about', component: About } ] }) ``` 这里定义了两个路由规则,一个是/,对应的组件是Home,另一个是/about,对应的组件是About。最后在Vue实例挂载Vue Router。 例如: ``` import Vue from 'vue' import App from './App.vue' import router from './router' Vue.config.productionTip = false new Vue({ router, render: h => h(App) }).$mount('#app') ``` 在模板使用路由链接和路由视图,例如: ``` <router-link to="/">Home</router-link> <router-link to="/about">About</router-link> <router-view></router-view> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值