从0开始搭建基于VUE的前端项目(四) Vue-Router的使用与配置

版本

  1. vue-router 3.6.5 (https://v3.router.vuejs.org/zh/)

安装

安装要指定版本,默认安装的4版本的

bash 复制代码
npm install vue-router@3.6.5

代码实现

  1. 在src目录下创建router目录
    router/index.js
javascript 复制代码
import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

const routes = [
  { path: '/foo', component: () => import('@/views/foo') },
  { path: '/bar', component: () => import('@/views/bar') }
]

export default new Router({
  // mode: 'history', // 去掉url中的#
  routes
})
  1. 在src目录下创建views目录
    views/foo.vue
javascript 复制代码
<template>
  <div>foo</div>
</template>

views/bar.vue

javascript 复制代码
<template>
  <div>bar</div>
</template>
  1. 在main.js引入router
javascript 复制代码
//....
import router from './router';

//....

new Vue({
  store,
  router,
  render: h => h(App),
}).$mount('#app')
  1. 修改app.vue,引入组件 router-view和router-link
    router-view:显示跳转后的页面
    router-link:链接跳转
javascript 复制代码
<template>
  <div id="app">
    <p>
    <!-- 使用 router-link 组件来导航. -->
    <!-- 通过传入 `to` 属性指定链接. -->
    <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    <router-link to="/foo">Go to Foo</router-link> <br/>
    <router-link to="/bar">Go to Bar</router-link>
    </p>
    <!-- 编程式路由 -->
    <button @click="goFoo">goFoo</button>
    <!-- 路由出口 -->
    <!-- 路由匹配到的组件将渲染在这里 -->
    <router-view></router-view>
  </div>
</template>

<script>

export default {
  name: 'App',
  components: {
    
  },
  methods: {
    goFoo() {
      this.$router.push('foo');
    }
  }
}
</script>

嵌套路由

要注意,以 / 开头的嵌套路径会被当作根路径。 这让你充分的使用嵌套组件而无须设置嵌套的路径。

  1. 创建嵌套路由
javascript 复制代码
const routes = [
  {  
    path: '/foo', 
    component: () => import('@/views/foo'), 
    children:[
      {
        path: 'childfoo',
        name: 'childfoo',
        component: () => import('@/views/childfoo'), 
      }
    ] 
  },
  {  path: '/bar', component: () => import('@/views/bar') }
]
  1. 在foo.vue增加router-view
javascript 复制代码
<template>
  <div>
    <p>foo</p>
    <router-view></router-view>
  </div>
</template>
  1. 创建childfoo.vue
javascript 复制代码
<template>
  <div>
    <p>child foo</p>
  </div>
</template>
相关推荐
程序员蜡笔熊3 小时前
Vite 8 换芯实测:Rolldown 替掉双引擎,构建快 3.19 倍
前端·javascript·vue
YWL1 天前
OpenLayers导出功能:地图截图+GeoJSON导出完整方案,从Canvas合并到PDF生成
前端·vue·openlayers
上单带刀不带妹1 天前
小程序图片缓存问题:时间戳和版本号解决图片不更新
缓存·小程序·vue·uniapp
wxwx_bscxy3222 天前
NodeJS 高校学业预警系统10551
mysql·node.js·vue·高校学业预警
爱折腾的编程老炮2 天前
潮玩品牌自建抽盒机小程序——商城 + 抽盒 + 一番赏 + 会员 + 社区,一套代码怎么搭
spring boot·小程序·vue·mybatis·uniapp
蜡台3 天前
ux-camera 跨平台相机组件
数码相机·vue·uniapp·camera·nvue·取景框
新中地GIS开发老师4 天前
WebGIS开发入门 | 从 Web 开发到地图开发,差别在哪儿?
前端·vue·webgis
Bigger5 天前
谁动了我的 URL?——记一次微前端"灵异 Bug"的排查实录
前端·ai编程·vue-router
JavaEdge.6 天前
scoped 样式与 data-v-* 属性选择器(写给 Javaer)
开发语言·vue
sunphp开发者6 天前
明灯智慧地图导览系统制作教程
vue·php·uniapp·js·贴图