vue3 路由搭建(包含layout组件)

本文详细介绍了如何在Vue3中使用vue-router4.2.4进行路由搭建,包括创建文件结构、配置index.js和routes.js,以及如何在App.vue和main.js中应用。重点涉及模块路由、layout组件和404处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、vue3路由搭建

    "vue-router": "^4.2.4"

2、在src目录下创建文件夹和文件

src
  router
    index.js
    routes.js

3、/src/router/index.js

// 通过vue-router插件实现模块路由配置
import { createRouter, createWebHashHistory } from "vue-router";
import { constantRoute } from "./routes";

// import { useStore } from "@/store/modules/socket.js";

// 创建路由器
let router = createRouter({
  // 路由模式hash
  history: createWebHashHistory(),
  routes: constantRoute,
  // 滚动行为
  scrollBehavior() {
    return {
      left: 0,
      top: 0,
    };
  },
});

router.beforeEach((to, form, next) => {
  // const store = useStore();
  next();
});

export default router;

4、/src/router/routes.js

下面所需页面需要自己去创建和配置

// 对外暴露配置路由(常量路由)
export const constantRoute = [
  {
    //登录成功以后展示数据的路由   tip:路由只有一个孩子,侧边栏直接展示孩子
    path: "/",
    component: () => import("@/layout/index.vue"),
    name: "layout",
    redirect: "/home",
    children: [
      //二级路由
      {
        path: "/home",
        component: () => import("@/views/home/index.vue"),
        meta: {
          title: "首页",
          showBgImage: true,
        },
      },
      {
        path: "/category",
        component: () => import("@/views/category/index.vue"),
        meta: {
          title: "分类",
          showBgImage: true,
        },
      },
    ],
  },
  {
    //404
    path: "/404",
    component: () => import("@/views/404/index.vue"),
    name: "404",
    meta: {
      title: "404",
    },
  },
  {
    //任意路由:
    path: "/:pathMatch(.*)*",
    redirect: "/404",
    name: "Any",
    meta: {
      title: "登任意路由",
    },
  },
];

5、这上面配置是有layout,所以需要创建src/layout文件夹,里面有index.vue文件

<template>
  <div>
    <router-view></router-view>
  </div>
</template>

<script setup></script>

<style scoped></style>

6、App.vue

<template>
  <div class="container">
    <router-view></router-view>
  </div>
</template>
<script setup></script>
<style scoped></style>

7、main.js入口文件

import { createApp } from "vue";
import App from "./App.vue";
// 路由
import router from "@/router/index";

const app = createApp(App);
app.use(router);
app.mount("#app");
### Vue3 项目中的 Layout 布局配置与实现 在现代前端开发中,Vue3 提供了强大的工具链来简化应用的创建过程。对于布局(Layout)的设计,在Vue3中有多种方式可以实现。 #### 使用 `vue-router` 实现多层嵌套路由视图 为了设置全局性的页面结构(Header, Footer 或者侧边栏),通常会采用单文件组件(SFCs)配合路由守卫的方式。下面是一个简单的例子展示如何利用 `vue-router` 来管理不同页面间的公共区域: 1. **安装依赖** 需要先确保已经安装了 `@vue/cli-plugin-babel`, `@vue/cli-service` 和 `vue-router`. 如果还没有的话可以通过 npm 安装: ```bash npm install vue-router@next --save ``` 2. **创建基础布局组件** 创建一个新的名为 `Layout.vue` 的 SFC 文件作为项目的默认布局容器: ```html <!-- src/views/Layout.vue --> <template> <div class="app-container"> <header>这是头部</header> <main> <router-view></router-view> </main> <footer>这是底部</footer> </div> </template> <script lang="ts"> import { defineComponent } from &#39;vue&#39;; export default defineComponent({ name: "AppLayout", }); </script> <style scoped> .app-container { display: flex; min-height: 100vh; flex-direction: column; } header, footer { background-color: #f8f9fa; padding: 1rem; text-align: center; } </style> ``` 3. **配置路由规则** 接下来修改 `src/router/index.ts` 中的内容以适应新的布局需求: ```typescript // src/router/index.ts import { createRouter, createWebHistory, RouteRecordRaw } from &#39;vue-router&#39;; import HomeView from &#39;../views/HomeView.vue&#39;; import AboutView from &#39;../views/AboutView.vue&#39;; import AppLayout from &#39;@/components/AppLayout.vue&#39;; // 导入自定义布局 const routes: Array<RouteRecordRaw> = [ { path: &#39;/&#39;, component: AppLayout, children:[ { path: &#39;&#39;, name: &#39;home&#39;, component: HomeView }, { path: &#39;/about&#39;, name: &#39;about&#39;, component: AboutView } ] } ]; const router = createRouter({ history: createWebHistory(process.env.BASE_URL), routes }); export default router; ``` 4. **调整入口文件** 修改 `main.ts` 让整个应用程序包裹在一个根级别的 `<Suspense>` 组件内,从而更好地处理异步加载逻辑: ```typescript // main.ts import { createApp } from &#39;vue&#39;; import App from &#39;./App.vue&#39;; import router from &#39;./router&#39;; createApp(App).use(router).mount(&#39;#app&#39;); ``` 以上就是基于 Vue Router 构建的基础布局模式[^1]。这种方式允许开发者轻松地为多个子页面共享相同的顶部导航条或页脚等内容,并且能够很好地与其他功能特性集成在一起。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值