目录
- 一、创建 vue3 项目 vite-vue3-project-js
- 二、创建项目目录
- 三、创建Home、About组件以及 vue-router 配置路由
- 四、修改完成后页面
一、创建 vue3 项目 vite-vue3-project-js
使用 vite 创建一个极简 vue3 项目请参考此文章:使用Vite创建一个vue3项目
下面是我在创建vue3项目时,没有切换 node 版本导致的node版本兼容性警告。 vite3 需要 node 必须是 =18 || >=20
版本才行。
分享一个 node 版本管理器 nvm(点击进入下载页面 github),可以很方便的切换 node 版本,大家可以安装一个试试。
如果使用 nvm 安装 node 失败的话可以参考这篇文章解决问题:使用nvm安装nodejs时,npm安装失败,提示 handshake timeout 。
下载 nvm 时,选择 nvm-setup.exe
安装程序安装。
二、创建项目目录
根据目录文件,在新建的 vite-vue3-project-js 项目的 src 目录文件夹下创建目录文件:
├── src
│ ├── api 数据请求
│ ├── assets 静态资源
│ ├── images 图片
│ ├── style 样式
│ ├── components 公共组件
│ ├── layout 布局(自定义菜单与内容布局)
│ ├── pages 页面组件
│ ├── Home
│ ├── About
│ ├── router 路由配置
│ ├── stores 数据状态管理
│ └── utils 工具函数
│ ├── request.js axios封装
三、创建Home、About组件以及 vue-router 配置路由
-
安装 vue-router。
npm install vue-router@next
-
使用 createRouter 创建 router 路由,在 router 文件夹中新建 index.js,书写如下代码:
import { createRouter, createWebHistory } from "vue-router"; import Home from "../pages/Home/index.vue" const routes = [ { path: '/', name: 'home', component: Home, }, { path: '/about', name: 'about', component: () => import('../pages/About/index.vue') } ] const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes, }) export default router;
-
创建Home、About组件。
<!-- src/Home/index.vue --> <template> <div> <h3>This is Home page</h3> <HelloWorld msg="Vite + Vue" /> </div> </template> <script setup> import HelloWorld from '../../components/HelloWorld.vue' </script> <style lang="scss" scoped></style>
<!-- src/About/index.vue --> <template> <div> <h3>This is About page!</h3> </div> </template> <script setup></script> <style lang="scss" scoped></style>
-
修改App.vue文件。
<template> <h1>Hello App!</h1> <div> <a href="https://vitejs.dev" target="_blank"> <img src="/vite.svg" class="logo" alt="Vite logo" /> </a> <a href="https://vuejs.org/" target="_blank"> <img src="./assets/vue.svg" class="logo vue" alt="Vue logo" /> </a> </div> <p> <!-- 使用 router-link 组件进行导航 --> <!-- 通过传递 `to` 来指定链接 --> <!-- `<router-link>` 将呈现一个带有正确 `href` 属性的 `<a>` 标签 --> <nav> <router-link to="/">Home</router-link> | <router-link to="/about">About</router-link> </nav> </p> <hr> <!-- 路由出口 --> <!-- 路由匹配到的组件将渲染在这里 --> <router-view></router-view> </template>
在
<style scoped></style>
中添加 nav、router-link 的样式nav { width: 100%; text-align: center; margin-top: 2rem; } nav a.router-link-exact-active { color: var(--color-text); } nav a.router-link-exact-active:hover { background-color: transparent; } nav a { display: inline-block; padding: 0 1rem; border-left: 1px solid var(--color-border); } nav a:first-of-type { border: 0; }
-
将 style.css 中的样式注释。
body { margin: 0; /* display: flex; place-items: center; */ min-width: 320px; min-height: 100vh; }
-
修改 main.js 文件,挂载 router 路由。
import { createApp } from 'vue' import './style.css' import App from './App.vue' import router from "./router/index.js" const app = createApp(App) app.use(router) // 挂载永远是最后一步 app.mount('#app')