nuxt二级路由
耗费了大半天的时间,终于把页面的二级路由配置好了
先看我的目录
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。如果没有登陆页,根本就不用考虑嵌套路由的问题,主要的menu跳转和<nuxt />可以直接写到layouts/default.vue中,首页可以放到pages/index.vue,就可以了。
好了,步入核心的
情景,在中间件middleware/authenticated.js
// 定义了一个中间件, 如果用户未登录, 则跳转登录页。 export default function ({ store, redirect }) { if (!store.state.user) { return redirect('/login') } }
首先,需要知道,pages/index.vue这个文件必须有,这是给路由'/',定义的页面,但是我真正的首页是在user/index.vue
其次,pages/index.vue和pages/users.vue内容是一样的,没有哪一个文件,都会出错
注意,pages/index.vue下
created () { this.$router.push('/users'); // 页面加载时跳转 },
意思是加载二级路由的pages/users/index.vue页面
<template>
<div style="height:100%;">
<el-container style="height:100%;">
<el-header class="header-con">
<h1 class="header-title">xxx后台</h1>
</el-header>
<el-container style="height:100%;">
<el-aside width="200px">
<el-menu
router
:default-active="navselected"
@select="selectItems"
class="el-menu-vertical-demo">
<el-menu-item index="/users/">
<span slot="title">全局配置</span>
</el-menu-item>
<el-menu-item index="/users/ditch">
<span slot="title">渠道列表</span>
</el-menu-item>
<el-menu-item index="/users/topUpType">
<span slot="title">充值类型列表</span>
</el-menu-item>
<el-menu-item index="/users/topUpMoney">
<span slot="title">充值金额列表</span>
</el-menu-item>
<el-menu-item index="/users/topUpMethod">
<span slot="title">支付方式列表</span>
</el-menu-item>
</el-menu>
<div class="menu-patch"></div>
</el-aside>
<el-main>
<NuxtChild :key="key"/>
</el-main>
</el-container>
</el-container>
</div>
</template>
<script>
export default {
data () {
return {
navselected: this.$store.state.page
}
},
created () {
this.$router.push('/users'); // 页面加载时跳转
},
computed: {
key() {
return this.$route.name !== undefined? this.$route.name +new Date(): this.$route +new Date()
}
},
methods: {
getNavType(){
this.navselected = this.$store.state.page
},
selectItems(path){
this.$store.commit('changePage',path);
//按钮选中之后设置当前的index为store里的值。
this.$router.push({
path,
query: {
t: +new Date() //保证每次点击路由的query项都是不一样的,确保会重新刷新view
}
})
}
},
watch: {
'$store.state.page': 'getNavType'
}
}
</script>
注意,在pages/users/index.vue页面中
export default { name: 'users' }
其他页面,比如pages/users/ditch.vue页面中
export default { name: 'users-ditch' }
一定要这样去写name,官网上也是这样说明的。
总结,嵌套路由(二级路由写法)
一,页面有个user.vue,文件夹也要有个同名的user;
二,最好有index.vue页面;
三,name格式。
更多精彩

