位置:首页 > web前端 > vue

vue3.x中路由模式 命名路由 路由重定向 路由别名

dearweb 发布:2021-08-12 22:38:21阅读:

前面带大家了解了vue3.x路由的基本使用情况,下面主要带大家更深入的了解和掌握vue3.x中路由、路由模式、命名路由、路由重定向、路由别名等。

路由的模式

vue3.x与2.x一样支持两种路由模式,HTML5的History模式和hash模式

hsah模式
// 引入路由组件
import { createRouter,createWebHashHistory } from "vue-router";

// 引入组件
import Home from '../components/Home.vue'
import News from '../components/news.vue'
import User from '../components/user.vue'
import NewsDetails from '../components/newsDetails.vue'

// 配置路由
const router= createRouter({
  history: createWebHashHistory(), // 设置hash模式
  routes:[
    {path:'/',component:Home},
    {path:'/news',component:News},
    {path:'/user',component:User},
    {path:'/newsDetails/:id',component:NewsDetails},
  ],
})

// 暴露路由
export default router
http://localhost:8080/#/user

http://localhost:8080/#/home

上面大家看到的是路由的hash模式以及hash路由的展示形式,下面是HTML5 History模式,相比hash更为美观,但是不如hash兼容性好

HTML5 History模式
// 引入路由组件
import { createRouter,createWebHistory} from "vue-router";

// 引入组件
import Home from '../components/Home.vue'
import News from '../components/news.vue'
import User from '../components/user.vue'
import NewsDetails from '../components/newsDetails.vue'

// 配置路由
const router= createRouter({
  history: createWebHistory(), // 设置HTML5 History模式
  routes:[
    {path:'/',component:Home},
    {path:'/news',component:News},
    {path:'/user',component:User},
    {path:'/newsDetails/:id',component:NewsDetails},
  ],
})

// 暴露路由
export default router
http://localhost:8080/user

http://localhost:8080/home

需要注意的是在history模式下需要在服务器上配置一下代理模式,下面分别为大家写一下apache和nginx的配置方式

apache配置方法

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f  
  RewriteCond %{REQUEST_FILENAME} !-d  
  RewriteRule . /index.html [L]
</IfModule>
nginx的配置方法

server {    
// 域名
    server_name www.dearweb.cn;    // 项目入口文件目录地址 保证有权限
    root /www/project/blog/dist;

    index index.php index.html;    // 配置伪静态
    location / {
  	try_files $uri $uri/ /index.html;
    }
}

路由的命名

有时候,需要通过一个名称来标识一个路由显得更方便一点,特别是在链接一个路由,或者是执行一些跳转的时候,这时我们可以在创建router实例的时候,在router配置中给某个路由设置名称。

// 配置路由
const router= createRouter({
  history: createWebHashHistory(),
  routes:[
    {
       path:'/',
       name:'home', // 路由命名
       component:Home
    },
  ],
})

如果你要跳转到/home,可以直接按照下面的方式进行跳转,param里面为传值的内容

<router-link :to="{name:'user',params:{}}"></router-link>

js代码调用,编程式导航方式跳转
router.push({name:'user',params:{}})

路由的重定向

路由的重定向是在routes中配置完成的,要从重定向/a到/b

const routes=[{
    path:'/home',
    redirect:'/'
}]

当然重定向也可以针对命名路由:

const routes = [
  {
    path:'/home',
    redirect:{name:'user'}
  }
]

除了上述两种方式还有一种在工作中常见的方式,使用函数进行动态重定向

const routes = [
    {
        path:'/user/:id',
        redirect:to=>{
            return {path:'/user',query:{q:to.params.searchText}}
        }
    }
]

路由的别名

上面我们探讨了路由的重定向,下面我们一起来看下本文的最后一个内容,路由的别名,别名 /as/home 表示用户访问 /home,URL保持不变 /home,但将被匹配,就像用户正在访问时一样。这样讲大家也许听得不是很明白,我们看下代码。

const routes = [
 {
  path:'/',
  component:Home,
  alias:'/home'  // 配置别名
 }
]
域名下 如果访问 / 或者是 /home 都会去访问Home组件的内容

别名可以自由的讲UI结构映射到任意的URL,而不受配置的嵌套结构的约束,使别名a开头,/以是路径在嵌套路由中是绝对的,甚至可以减量中广核结合起来使用,并为数组提供多个别名:

const routes = [
    {
        path:'/user',
        component:User,
        children:[
        {
            path:'',component:UserList,alias:['/p','/u']
        }
        ]
    }
]

今天主要给大家带来了vue3.x路由的进阶知识,路由、路由模式、命名路由、路由重定向、路由别名等,it道路上,我们共同进步。

24人点赞 返回栏目 提问 分享一波

小礼物走一波,支持作者

还没有人赞赏,支持一波吧

留言(问题紧急可添加微信 xxl18963067593) 评论仅代表网友个人 留言列表

暂无留言,快来抢沙发吧!

本刊热文
网友在读
手机扫码查看 手机扫码查看