博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue基础(10)--vue-router
阅读量:5959 次
发布时间:2019-06-19

本文共 3772 字,大约阅读时间需要 12 分钟。

路由:

在<router-view> 中显示跳转位置,注意点:

  1. exact
  2. router-link

app
login
login
login exact
复制代码

重点:props的使用。

//******注意:尽量用props属性,让组件跟路由解耦,复用性更高

//还有子路由  path:‘:id’的用法

props:(route)=>({id:route.query.b})  props:  {id:"456"}在组件内props:['id'], console.log(this.id)复制代码

异步路由:

component: () => import('../views/todo/todo.vue')             //按需加载,优化利器复制代码

处理一个路由跳转两块布局的情况:

/*components:{                                 //处理一个路由跳转两块布局的情况        default:Todo,                          //
a:Login //
}*/复制代码

children: [  { path: 'test',              component: Login } ]复制代码

 routes.js

-----------------------------------------------------------------------export default [  {    path: '/',    redirect: '/app'                           //默认路由跳转  },  {    // path: '/app/:id',                       //路由传参** :id    (重*要)    path: '/app',                              // 类比:query  ?a=123&b=456   通过this.$router获取    props: true,                               //设置为true,  在组件内直接可以通过props取出————props:['id']    还可以指定传入id, eg:props:{id: '456'}, props: (route) => ({ id: route.query.b })b就是456    component: () => import('../views/todo/todo.vue'),   // --- 异步路由    name: 'app',                               //路由命名 
meta: { title: 'this is app', description: 'asdasd' }, beforeEnter (to, from, next) { console.log('app route before enter') next() } // children: [ //子路由 // { // path: 'test', // component: Login // } // ] }, { path: '/login', component: () => import('../views/login/login.vue') // component: Login }]复制代码

router.js                           //router 参数 routes

知识点:

  1. mode:history . 默认是hash路由,url后有#,修改为history
  2. query查看每个url上带的参数。this.$router

import Router from 'vue-router'import routes from './routes'export default () => {  return new Router({    routes,    mode: 'history',                              //默认hash,  修改为histroy后,url无#    // base: '/base/',                            //默认跳转的路由加入base,基路径,非强制性    linkActiveClass: 'active-link',               //
app
linkExactActiveClass: 'exact-active-link', scrollBehavior (to, from, savedPosition) { //页面路径跳转的时候,页面要不要滚动 if (savedPosition) { return savedPosition //(要不得要定位到上处) } else { return { x: 0, y: 0 } } } // fallback: true //不是所有浏览器支持history模式,一般就用true开启多页应用 // parseQuery (query) { //url 后面的参数 ?后面的货 // }, // stringifyQuery (obj) { //字符串转对象 // } })}复制代码

路由守卫---利器

作用:跳转前后座检查,如:身份检查,地址检查,登录状态检查

const router= createRouter()router.beforeEach((to,from,next)=>{    console.log('before each invoked')    if(to.fullPath ==='/login'){ //跳转之前可做判断,做一些预处理,如:验证用户登录        next({path:'/login'})       }else{        next()    }})router.beforeResolve((to,from)=>{    console.log('before resolve invoked')})router.afterEach((to,from)=>{    console.log('after each invoked')})复制代码
组件内部

beforeRouteEnter(to,from,next){    next(vm=>{        console.log('after enter vm.id is',vm.id)    })},beforeRouteUpdate(to,from,next){   //路由更新的时候出发,wactch方法增加开销较大    next()},beforeRouteLeave(to,from,next){    //可做确认离开判断    if(global.confirm('are you sure?')){        next()    }},复制代码
顺序 :全局路由->路由配置->组件内部->beforeResolve->afterEach

webpack相关配置

historyApiFallback:{              //前端刷新界面默认回到这个界面    index:'/public/index.html'    //这货地址跟config.output.public的值相关}eg:webpck.base.config.js处config={    ...    output:{        ...        publicPath:'/public/'          //historyApiFallback的基路径    }}复制代码

将路由的dom缓存到内存中 --- ---性能优化

复制代码

转载地址:http://qzfax.baihongyu.com/

你可能感兴趣的文章
windows系统中安静的安装补丁
查看>>
MongoDB使用中的一些问题
查看>>
play02-Getting started-Creating a new application
查看>>
系统架构
查看>>
UITableView是不会响应touchesBegan:方法的
查看>>
Computer-memory
查看>>
redis 实践笔记(初步)
查看>>
背道而驰or殊途同归?区块链与云计算未来趋势
查看>>
Spring整合JMS(四)——事务管理
查看>>
设计模式学习笔记(七)之模板方法模式(Template Method)
查看>>
论程序员第一份工作该怎么走
查看>>
我的友情链接
查看>>
项目管理师复习心得:下午案例的解题注意要点
查看>>
Hadoop内核调整
查看>>
我的友情链接
查看>>
主流原型工具可用性测试横向比较
查看>>
我的友情链接
查看>>
Guava——使用Preconditions做参数校验
查看>>
iSCSI存储用作Proxmox VE的LVM共享存储
查看>>
网络营销——关键词竞争度分析
查看>>