vueルーティング構成
2734 ワード
ルーティングのインストール npm install vue-router --save-dev
コンフィギュレーション srcにrouter/index.js を新規作成 srcの下にmain.jsとApp.vue を新規作成 router/index.jsでルーティングパスと対応するコンポーネント を構成する main.jsでrouter/index.jsをインポートし、vueのインスタンスに を入れます.プロジェクトvue serve./src/main.js を実行
router-viewとrouter-link/ルート /filmはルート/filmルート を意味する. router-view配置(レンダリング)サブルーティング metaは属性を設定でき、ルーティングガードの使用を便利にする
ガードが必要な位置に設定
コンフィギュレーション
/**
* vue-router
*/
import Vue from 'vue';
import VueRouter from 'vue-router';
// , use
Vue.use(VueRouter); //
//
const routes = [
{
//
path: '/film',
component: () => import('@/views/film'),
},
{
//
path: '/cinema',
component: () => import('@/views/cinema'),
},
{
//
path: '/pintuan',
component: () => import('@/views/pintuan'),
},
{
//
path: '/my',
component: () => import('@/views/my'),
},
];
const router = new VueRouter({
routes
});
export default router;
import Vue from 'vue';
import App from './App.vue';
import router from './router/index'
new Vue({
router,
render: h=>h(App)
}).$mount('#app');
router-viewとrouter-link
{
path: '/order',
component: () => import('@/views/my/order'),
redirect: '/order/orderList',
children: [
{
path: 'orderList',
meta: {
title: ' ',
needLogin: true
},
component: () => import('@/views/order/orderList')
},
{
path: 'orderDetail/:orderID',
meta: {
title: ' ',
needLogin: true
},
component: () => import('@/views/order/orderDetail')
}
]
}
/**
* @param {to}
* @param {from}
* @param {next}
*/
router.beforeEach((to, from, next) => {
document.title = to.meta.title || ' '
//
let isLogin = $store.state.isLogin
if (to.meta.needLogin && !isLogin) {
next({
path: '/login'
})
} else {
next();
}
})
ガードが必要な位置に設定
meta: {
needLogin: true
},