vue3路由配置

使用 Vue Router(Vue.js 的官方路由管理器)来配置一个 Vue 应用的路由。

import { createRouter, createWebHistory } from 'vue-router'

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    {
      path:'/',
      redirect:'/home'
    },
    {
      path: '/home',
      name: 'home',
      component: () => import('@/views/HomeView.vue')
    },
    {
      path: '/about',
      name: 'about',
      component: () => import('../views/AboutView.vue')
    }
  ]
})

export default router
  1. 导入必要的模块

    import { createRouter, createWebHistory } from 'vue-router'
    

    这里从 vue-router 包中导入了两个函数:createRouter 和 createWebHistorycreateRouter 用于创建一个新的路由实例,而 createWebHistory 用于创建一个基于 HTML5 历史模式的路由实例。
    2. 创建路由实例

    const router = createRouter({  
      ...  
    })

    使用 createRouter 函数来创建一个新的路由实例,并赋值给 router 变量。
    3. 设置路由的历史模式

    history: createWebHistory(import.meta.env.BASE_URL),
    

    这里设置了路由的历史模式为基于 HTML5 的历史模式(也称为“HTML5 History 模式”)。这意味着 Vue Router 将使用 HTML5 History API 来管理 URL,而不是传统的哈希模式(例如 #/home)。

    import.meta.env.BASE_URL 是一个 Vite 或 Vue CLI 提供的环境变量,它通常代表应用的基础 URL。但在这里,createWebHistory 函数并不需要这个参数,因为它仅仅创建一个新的历史记录实例,而不关心应用的基础 URL。所以,这个参数可能是不必要的,除非你有特定的用途。
    4. 定义路由

    在 routes 数组中,定义了应用的路由规则:

    * 第一个路由规则:  
      
      
    ```javascript  
    {  
      path:'/',  
      redirect:'/home'  
    }  
    ```  
    当用户访问应用的根路径(`/`)时,他们将被重定向到 `/home` 路径。  
    * 第二个路由规则:  
      
      
    ```javascript  
    {  
      path: '/home',  
      name: 'home',  
      component: () => import('@/views/HomeView.vue')  
    }  
    ```  
    当用户访问 `/home` 路径时,他们将看到 `HomeView.vue` 组件。这里使用了动态导入(`import()`),意味着该组件只有在需要时才会被加载。`@` 符号通常是一个别名,指向项目的 `src` 目录(这取决于你的项目配置)。  
    * 第三个路由规则:  
      
      
    ```javascript  
    {  
      path: '/about',  
      name: 'about',  
      component: () => import('../views/AboutView.vue')  
    }  
    ```  
    这个路由规则与第二个类似,但它是为 `/about` 路径定义的,并且直接使用了相对路径来导入 `AboutView.vue` 组件。

    5. 导出路由实例

    export default router
    

    最后,这个路由实例被导出,以便在 Vue 应用的其他部分中使用。

HTML5 History API 与传统的哈希模式(例如 #/home)在前端路由管理中的区别

  1. URL 表现形式
    • HTML5 History API:使用标准的 URL 路径,如 /home 或 /about,无需 # 符号。这种形式的 URL 更符合用户习惯和搜索引擎优化(SEO)的要求。
    • 哈希模式:在 URL 中使用 # 符号来模拟路由,如 #/home 或 #/about# 后面的部分被称为哈希片段(hash fragment),它不会发送到服务器,只存在于浏览器中。
  2. 工作原理
    • HTML5 History API:利用 HTML5 提供的 History API 来管理浏览器的历史记录。当 URL 路径改变时,通过 JavaScript 的 pushState 或 replaceState 方法添加或修改历史记录条目,而不会重新加载整个页面。浏览器会根据这些历史记录条目加载相应的页面内容,但需要服务器端的支持来处理不在首页的 URL 请求。
    • 哈希模式:通过改变 URL 中的哈希片段来触发页面内容的加载。JavaScript 可以监听 hashchange 事件来检测 URL 的变化,并根据哈希片段的不同值加载相应的页面内容。哈希路由不需要服务器端的支持,因为哈希片段的改变不会触发页面刷新或向服务器发送请求。
  3. 兼容性和SEO
    • HTML5 History API:需要浏览器支持 HTML5 History API,因此在一些老旧浏览器中可能无法正常工作。但它提供了更美观的 URL,有利于 SEO 和用户体验。
    • 哈希模式:兼容性较好,即使在不支持 HTML5 History API 的浏览器中也能正常工作。但由于 URL 中包含 # 符号,可能会影响 SEO 效果和用户体验。
  4. 实现细节
    • 在 HTML5 History API 模式下,当用户点击链接或进行其他导航操作时,JavaScript 会通过 pushState 或 replaceState 方法来修改 URL 并更新页面内容。浏览器的前进和后退按钮也可以正常工作,因为它们操作的是浏览器的历史记录。
    • 在哈希模式下,当用户点击链接时,JavaScript 会修改 window.location.hash 属性来改变 URL 的哈希片段。然后,JavaScript 会监听 hashchange 事件来检测 URL 的变化,并根据哈希片段的不同值加载相应的页面内容。

总结来说,HTML5 History API 提供了更现代、更美观的 URL 管理方式,但需要服务器端的支持和较好的浏览器兼容性。而哈希模式则具有更好的兼容性,但 URL 表现形式和 SEO 效果可能不如 HTML5 History API。在选择使用哪种模式时,需要根据项目需求、目标用户群体和服务器配置等因素进行综合考虑。

在 Vue Router 中,当使用 createWebHistory 方法时,Vue Router 会使用 HTML5 History API 来管理 URL,这意味着 URL 将不包含 #(哈希符号),而是像普通的网页链接一样。

哈希模式(Hash Mode)是 Vue Router 的默认模式,但在 HTML5 History 模式(History Mode)下,你可以获得更“正常”的 URL,这对于搜索引擎优化(SEO)和用户体验(比如可以直接通过 URL 分享页面)都有好处。

但是,需要注意的是,在 History 模式下,如果你的服务器没有正确配置,用户可能会在直接访问一个深层链接(如 /user/123)时遇到 404 错误,因为服务器通常不知道如何响应这样的请求。为了避免这个问题,你需要确保服务器对于所有路由都能返回相同的 index.html 文件,然后由 Vue Router 在客户端接管并显示正确的视图。

在 Vue CLI 创建的项目中,通常会为你配置一个开发服务器(如 webpack-dev-server),这个服务器会自动处理这个问题。但在生产环境中,你需要自己配置服务器来确保正确的行为。

  • 22
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3的路由配置和访问权限配置如下: 1 路由配置: 在Vue 3中,可以使用Vue Router进行路由配置。首先,需要安装Vue Router依赖: ``` npm install vue-router@next ``` 然后,在项目的入口文件中创建路由实例,并将其挂载到Vue应用中: ```javascript import { createApp } from 'vue' import { createRouter, createWebHistory } from 'vue-router' import App from './App.vue' const router = createRouter({ history: createWebHistory(), routes: [ // 路由配置项 ] }) const app = createApp(App) app.use(router) app.mount('#app') ``` 在`routes`数组中,可以配置多个路由项,每个路由项包含路径、组件等信息。例如: ```javascript const routes = [ { path: '/', name: 'Home', component: Home }, { path: '/about', name: 'About', component: About } ] ``` 这样就完成了基本的路由配置。 2. 访问权限配置: 在Vue Router中,可以通过导航守卫来实现访问权限的配置。导航守卫是一组回调函数,可以在路由导航过程中进行拦截和控制。 - 全局前置守卫:使用`router.beforeEach`方法来注册全局前置守卫,该守卫会在每次路由切换前被调用。 ```javascript router.beforeEach((to, from, next) => { // 在这里进行权限判断和控制 next() }) ``` - 路由独享守卫:在路由配置项中,可以使用`beforeEnter`属性来注册路由独享守卫,该守卫只会在当前路由被激活时被调用。 ```javascript const routes = [ { path: '/admin', name: 'Admin', component: Admin, beforeEnter: (to, from, next) => { // 在这里进行权限判断和控制 next() } } ] ``` - 组件内的守卫:在组件内部,可以使用`beforeRouteEnter`、`beforeRouteUpdate`和`beforeRouteLeave`等生命周期钩子函数来注册组件内的守卫。 ```javascript export default { beforeRouteEnter(to, from, next) { // 在这里进行权限判断和控制 next() }, beforeRouteUpdate(to, from, next) { // 在这里进行权限判断和控制 next() }, beforeRouteLeave(to, from, next) { // 在这里进行权限判断和控制 next() } } ``` 以上就是Vue 3的路由配置和访问权限配置的基本介绍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值