Vue之路由

Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。包含的功能有:

  • 嵌套的路由/视图表
  • 模块化的、基于组件的路由配置
  • 路由参数、查询、通配符
  • 基于 Vue.js 过渡系统的视图过渡效果
  • 细粒度的导航控制
  • 带有自动激活的 CSS class 的链接
  • HTML5 历史模式或 hash 模式,在 IE9 中自动降级
  • 自定义的滚动条行为


Vue Router的安装使用 :

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="vue.min.js"></script>
    <script src="vue-router.js"></script>
</head>
<body>

<div id="d1"></div>

<script>
    //第一步在Vue示例中使用VueRouter
    Vue.use(VueRouter);

    let Home = {
        template: `
        <div>
            <h1>主页</h1>
        </div>
        `
    };

    let Login = {
        template: `
        <div><h1>登录</h1></div>
        `
    };

    let Register = {
        template: `
        <div><h1>注册</h1></div>
        `
    };

    let App = {
        //第四步
        //router-link会渲染成a标签, to属性相当于href属性, to后面是router中定义的路径
        //router-view是页面内容渲染的出口, 路由匹配到的组件将渲染在这里
        template: `
        <div>
            <!--直接写路径版
            <router-link to="/">首页</router-link>
            <router-link to="/login">登录</router-link>
            <router-link to="/register">注册</router-link>-->

            <!--命名路由版
            <router-link :to="{name: ‘home‘}">首页</router-link>
            <router-link :to="{name: ‘login‘}">登录</router-link>
            <router-link :to="{name: ‘register‘}">注册</router-link>
            <router-view></router-view>-->

            <!--params是无参数名的传参关键字
            query是有参数名的传参关键字
            <router-link :to="{name: ‘home‘}">首页</router-link>
            <router-link :to="{name: ‘login‘,params:{loginId: 1}}">登录</router-link>
            <router-link :to="{name: ‘register‘,query:{reg: 1}}">注册</router-link>
            <router-view></router-view>-->
        </div>
        `,
    };

    //第二部实例化一个router对象
    //本质上是将路径和页面内容绑定一个对应的关系
    // 在真实的场景中,可有以下路径形式
    // user/1;
    // user/?userId=1;
    let router = new VueRouter({
        mode: "history",
        routes: [
            {
                name: "home",
                path: "/",
                component: Home,
            },
            {
                //xxx/参数
                name: "login",
                path: "/login/:loginId",
                component: Login
            },
            {
                //xxx/?参数名=参数值
                name: "register",
                path: "/register",
                component: Register
            }
        ]
    });

    new Vue({
        el: "#d1",
        template: `<App/>`,
        //第三部在根实例对象中注册router对象
        router: router,
        components: {
            App,
        }
    })
</script>

</body>
</html>


Vue Router子路由 :

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="vue.min.js"></script>
    <script src="vue-router.js"></script>
</head>
<body>

<div id="d1"></div>

<script>

    Vue.use(VueRouter);

    let Home = {
        template: `<div><h1>这是主页</h1></div>`
    };
    let Course = {
        template: `
            <div>
                <h2>课程页面</h2>
                <router-link :to="{name: ‘python‘}" append>派森</router-link>
                <router-link :to="{name: ‘linux‘}">linux</router-link>
                <router-view></router-view>
            </div>`,
    };
    let Python = {
        template: `<div><h3>人生苦短,我用派森</h3></div>`
    };
    let Linux = {
        template: `<div><h3>不会linux岂不是咸鱼</h3></div>`
    };
    let Class = {
        template: `
            <div>
                <h1>班级页面</h1>
                <router-link :to="{name: ‘one‘}">一班</router-link>
                <router-link :to="{name: ‘two‘}">二班</router-link>
                <router-view></router-view>
            </div>`
    };
    let One = {
        template: `
            <div>
                <router-link :to="{name: ‘red‘}">一班啊</router-link>
            </div>`
    };
    let Two = {
        template: `<div><h3>二班啊</h3></div>`
    };

    let router = new VueRouter({
        routes: [
            {
                name: "home",
                path: "/",
                component: Home
            },
            {
                name: "course",
                path: "/course",
                component: Course,
                children: [
                    {
                        name: "python",
                        path: "python",
                        component: Python
                    },
                    {
                        //使用append自动添加前路径的话.子路径名前不能有" / "
                        name: "linux",
                        path: "linux",
                        component: Linux
                    },
                    {
                        name: "red",
                        path: "red",
                        //重定向页面
                        redirect: "/",
                    }
                ]
            },
            {
                name: "class",
                path: "/class",
                component: Class,
                children: [
                    {
                        name: "one",
                        path: "/class/one",
                        component: One
                    },
                    {
                        name: "two",
                        path: "/class/two",
                        component: Two
                    }
                ]
            },
        ]
    });

    let App = {
        template:`
            <div>
                <router-link :to="{name: ‘home‘}">首页</router-link>
                <router-link :to="{name: ‘course‘}">课程</router-link>
                <router-link :to="{name: ‘class‘}">班级</router-link>

                <router-view></router-view>
            </div>
        `,
    };

    new Vue({
        el: "#d1",
        template:`<App/>`,
        components:{
            App,
        },
        router: router
    })

</script>
</body>
</html>

原文地址:https://www.cnblogs.com/dong-/p/9942890.html

时间: 2024-10-10 15:29:13

Vue之路由的相关文章

vue.js路由

Vue.js 路由 Vue.js 路由允许我们通过不同的 URL 访问不同的内容. 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA). Vue.js 路由需要载入 vue-router 库 中文文档地址:vue-router文档. 安装 1.直接下载 / CDN https://unpkg.com/vue-router/dist/vue-router.js NPM 推荐使用淘宝镜像: cnpm install vue-route

Vue实现路由跳转和嵌套

在实际项目中我们会碰到多层嵌套的组件组合而成,但是我们如何实现嵌套路由呢?因此我们需要在 VueRouter 的参数中使用 children 配置,这样就可以很好的实现路由嵌套. index.html,只有一个路由出口 [html] view plain copy<div id="app"> <!-- router-view 路由出口, 路由匹配到的组件将渲染在这里 --> <router-view></router-view> <

vue之路由以及默认路由跳转

vue之路由以及默认路由跳转 之前我们将子组件挂载到根组件的时候都是手动挂载的,而路由就是自动的将子组件挂载到根组件中 在这里我们需要用到一个路由插件,就是 vue-router ,vue-router网址:https://router.vuejs.org/zh/guide/ 既然要用插件了那肯定要先安装啦. vue-router使用步骤: 1.安装vue-router    官网有说明 注意:安装时最好加上 --save  ,让其加入到package.js包中,方便被人使用.也可以使用cnpm

[VUE]关于路由哪些事儿

什么是路由 之前有个小伙伴面试被问到:面试官:不用vue能不能写单页面应用?答:用angular啊(咳咳,开个玩笑),答案确实是可以的,原生js中有个事件叫做onhashchange,可以在window对象上监听这个事件,通过触发事件动态加载js,实现了没有向服务器发起请求却能通过url和页面关联,这就是所谓的前端路由了.路由反映了url和页面的映射关系 vue路由 言归正传,说说vue-router做路由.先来个简单的demo:npm i vue-router --save-dev先通过js手

关于Vue的路由、脚手架笔记

在页面引入vue-router.js文件,开始配置路由 <div id="box"> <ul><li> <a v-link="{path:'/home'}">主页</a> </li> //点击跳转路由 <li> <a v-link="{path:'/news'}">新闻</a></li> </ul> <div&

vue笔记-路由,组件

git page: 任何仓库 master分支,都可以发布(git page) ------------------------------------- 双向过滤器: Vue.filter(name,{ read: write: }); ------------------------------------- 1.0 2.0 ------------------------------------- 引入 vue.js ------------------------------------

vue router路由(三)

当环境搭建及Vue语法与指令都有所了解,该说下router. build目录是打包配置文件 (不建议动) config是vue项目基本配置文件 dist是构建后文件 js 手动创建 (根据需要) node_modules 根据package.json 安装依赖模块 src资源文件,基本文件都会放在这里 app.vue  父组件 main.js 入口文件 static构建好的文件会在这个目录 index.html 主页 1.首先安装路由通过npm: npm install vue-router 在

vue.js路由参数简单实例讲解------简单易懂

vue中,我们构建单页面应用时候,一定必不可少用到vue-router vue-router 就是我们的路由,这个由vue官方提供的插件 首先在我们项目中安装vue-router路由依赖 第一种,我们提供命令行来安装 npm install vue-router --save 第二种,我们直接去官方github下载 https://github.com/vuejs/vue-router 路由参数设置 1,实例化一个路由,然后路由映射表中的地址带参数,这个参数就是路由的参数 接着给映射表中的路由设

vue的路由

先写个基础版 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://unpkg.com/vue/dist/vue.js"></script> <script src="https:/

vue嵌套路由

在实际项目中我们会碰到多层嵌套的组件组合而成,但是我们如何实现嵌套路由呢?因此我们需要在 VueRouter 的参数中使用 children 配置,这样就可以很好的实现路由嵌套. index.html,只有一个路由出口 1 <div id="app"> 2 <!-- router-view 路由出口, 路由匹配到的组件将渲染在这里 --> 3 <router-view></router-view> 4 </div> main.