[ Vue-cli 安装 ]
- 项目开发: npm install -g @vue/cli
- 快速原型开发(对单个 *.vue 文件开发): npm install -g @vue/cli-service-global
[ 创建项目 ]
- vue create Router-demo
[ 运行 ]
- npm run serve
[ 目录 ]
- public => 静态资源文件 html icon
- src => 入口文件 组件 路由 自己配置的静态资源文件
+ assets => 自己配置的静态资源文件
+ components => 公共组件
+ router => 设置路由
+ views => 视图组件
+ App.vue => 所有组件的入口文件
+ main.js => 默认入口文件
- .browserslistrc => 目标浏览器配置
- .babel.config.js => babel 配置文件
- .package.json => 构建脚本和依赖关系
Vue-router 配置
引入组件并全局使用路由
/**
* router/index.js
*/
import Vue from 'vue';
import Router from 'vue-router';
// 1. 引入组件
import Home from '@/views/Home.vue';
import Profile from '@/views/Profile.vue';
import User from '@/views/User.vue';
Vue.use(Router) // 全局使用 Router路由可以在所有的组件中使用
定义路由
/**
* router/index.js
*/
// 2. 设置路由映射表 将路由和组件关系映射起来
const routes = [
{
path: '/', //
name: 'home', // 命名路由
component: Home
},
{
path: '/profile',
name: 'profile',
component: Profile
},
{
path: '/user',
name: 'user',
component: User
},
// 如果 path 都不匹配 ,指定跳转路径
{
path: '*',
// redirect: '/', 或者
redirect: {
path:'/'
}
},
]
定义子路由
{
path: '/user',
name: 'user',
component: User,
// 子级路由
children: [
{
path: 'useradd',
// 动态路由
component: () => import('@/views/UserAdd.vue'),
},
{
path: 'userlist',
component: () => import('@/views/UserList.vue'),
},
{
path: 'detail/:id',
component: () => import('@/views/Detail.vue'),
},
],
},
// 子路由 router 入口 to="/user/userlist"
<router-link to="/user/userlist">用户列表</router-link>
创建 router 实例
/**
* router/index.js
*/
// 3. 将 routes 放入 router 中进行渲染
const router = new Router({
mode: 'history', // 模式 其他值: "hash" | "history" | "abstract"
base: process.env.BASE_URL,
routes,
})
export default router
router 实例 注入到根实例进行渲染
/**
* src/main.js
*/
import Vue from 'vue'
import App from './App.vue'
import router from './router'
Vue.config.productionTip = false
new Vue({
router, // $royter(所有的方法) $route(所有的属性)
render: h => h(App)
}).$mount('#app')
router-link
<!-- App.vue -->
<template>
<div id="app">
<div id="nav">
<!-- Router 入口 -->
<!-- <router-link to="/">Home</router-link> | -->
<!-- <router-link to="/profile">Profile</router-link> -->
<!-- <router-link to="/user">User</router-link> -->
<!-- Router 入口 动态写法 -->
<router-link :to="{path: '/'}">Home</router-link> |
<router-link :to="{name: 'profile'}">Profile</router-link>
<router-link to="/user">User</router-link>
</div>
<!-- Router 出口 -->
<router-view/>
</div>
</template>