• vue学习(十二)vue全家桶 Vue-router&Vuex


    一 vue-router的安装

    二 vue-router的基本使用

    三 命名路由

    四 动态路由的匹配和路由组件的复用

    一 vue-router的安装

    NPM

    npm install vue-router

    如果在一个模块化工程中使用它,必须要通过 Vue.use() 明确地安装路由功能:

    // 在router/index.js中
    import
    Vue from 'vue' import VueRouter from 'vue-router' Vue.use(VueRouter)

    // 之后在main.js中
    import router from './router'
     

    二 vue-router的基本使用

    // router/index.js                  与直接生成的此文件有些不一样

    // 1. 导入 import Vue from 'vue' import VueRouter from 'vue-router' import Home from '../views/Home.vue' import About from '../views/About.vue' // 2.模块化机制 使用 Vue.use(VueRouter) // 3. 创建路由器对象 export default new VueRouter ({ routes: [ { path: '/', name: 'home', component: Home }, { path: '/about', name: 'about', component: About } ] })
    // main.js 
    import
    Vue from 'vue' import App from './App.vue' import router from './router' Vue.config.productionTip = false // 4 在main.js中挂载 router new Vue({ router, render: h => h(App) }).$mount('#app')
    // App.vue 
    <template> <div id="app"> <div id="nav"> <!--router-link相当于a标签 to相当于href--> <router-link to="/">Home</router-link> | <router-link to="/about">About</router-link> </div> <!--router-view 相当于路由组件的出口--> <router-view/> </div> </template>

     三 命名路由

    index.js
    // 1. 导入 import Vue from 'vue' import VueRouter from 'vue-router' import Home from '../views/Home.vue' import About from '../views/About.vue' // 2.模块化机制 使用 Vue.use(VueRouter) // 3. 创建路由器对象 export default new VueRouter({ routes: [ { path: '/', name: 'home', component: Home                index.js 写个 name }, { path: '/about', name: 'about', component: About } ] })
    // App.vue
    <template> <div id="app"> <div id="nav"> <!--<router-link to="/">Home</router-link> |--> <router-link :to="{name:'home'}">首页</router-link> | // 对比两句话 <!--<router-link to="/about">About</router-link>--> <router-link :to="{name:'about'}">About</router-link> </div> <!--router-view 相当于路由组件的出口--> <router-view/> </div> </template>

    四 动态路由的匹配和路由组件的复用

    动态路由的匹配

    需求:

    http://localhost:8080/user/1
    http://localhost:8080/user/2
    // 都是同样的页面

    要新建一个User.vue的文件
    1. 先配置路由  index.js
    // 1. 导入
    import Vue from 'vue'
    import VueRouter from 'vue-router'
    import Home from '../views/Home.vue'
    import About from '../views/About.vue'
    import User from '../views/User.vue'

    // 2.模块化机制 使用
    Vue.use(VueRouter)

    // 3. 创建路由器对象
    export default new VueRouter({
    routes: [

    {
    path: '/',
    name: 'home',
    component: Home
    },
    {
    path: '/about',
    name: 'about',
    component: About
    },
    {
    // 1. 匹配路由 【:id】是哪个id的用户 :id
    path: '/user/:id',
    name: 'user',
    component: User
    }
    ]
    })
    2 App.vue
    <template>
        <div id="app">
            <div id="nav">
                <!--router-link相当于a标签 to相当于href-->
                <!--<router-link to="/">Home</router-link> |-->
                <router-link :to="{name:'home'}">首页</router-link>|
                |
                <!--<router-link to="/about">About</router-link>-->
                <router-link :to="{name:'about'}">About</router-link>|
                <router-link :to="{name:'user', params:{id:1}}">用户1</router-link>|
                <router-link :to="{name:'user', params:{id:2}}">用户2</router-link>|
            </div>
            <!--router-view 相当于路由组件的出口-->
            <router-view/>
        </div>
    </template>
    3 新建一个User.vue的文件
    <template>
        <div class="user">
            <h1>用户{{$route.params.id}}页面</h1>
        </div>
    </template>

    路由组件的复用

    <script>
        export default {
            // 当路由参数变化时  /user/1 切换到 /user/2 原来的组件实例会被复用
            // 因为两个路由渲染了同个组件,复用高效
            created() {
                console.log('a',this.$route.params.id)
                // 这个时候就只能打印一个id 要想点那个id打印那个id 我们要用watch监听
    
            },
    //        watch: {
    //            // 监听 从哪个id变化成那个id
    //            $route: (to, from) => {
    //                console.log(to.params.id)
    //                console.log(from)
    //                // 监听 从哪个id变化成那个id  拿到id之后我们就可以发起ajax 请求后端接口数据 数据驱动视图
    //            }
    //        }
            beforeRouteUpdate(to,from,next){
                console.log(to.params.id)
    //            console.log(from)
                // 一定要调用next 不然就阻塞(就是点不动了)
                next();
            }
    
        }
    </script>

     

     

  • 相关阅读:
    OFBiz中services调用机制
    OFBiz中JOB的运行机制
    ofbiz中运行配置及流程
    ofbiz框架学习
    在java学习中的思考
    在更新操作中所需要注意的事项
    级联删除
    关于整合hibernate4和spring3的相关注意事项
    常见系统中文字体的英文名
    flash Socket 连接 以及 跨域策略文件crossdomain.xml配置详解
  • 原文地址:https://www.cnblogs.com/a438842265/p/11996081.html
Copyright © 2020-2023  润新知