Vue3.5 企业级管理系统实战(二):Router、Pinia 及 Element-Plus 集成

news/2025/1/13 5:37:18/

1 Vue Router 集成

1.1 安装 vue-router

通过 pnpm 安装 Vue Router

pnpm i vue-router

1.2 配置 Router

在 src 文件夹下新建 views 文件夹,新建文件 Home.vue 和 About.vue

 在 src 文件夹下新建 router 文件夹,在 router 下新建 index.ts 用来配置路由

//router/index.ts
import {createRouter,createWebHistory,type RouteRecordRaw
} from "vue-router";const routes: RouteRecordRaw[] = [{path: "/home",component: () => import("../views/Home.vue")},{path: "/about",component: () => import("../views/About.vue")}
];export default createRouter({routes, //路由表history: createWebHistory() //路由模式
});

1.3 引用 Router

在 main.ts 中引入路由

//main.ts
import { createApp } from "vue";
import "./style.css";
import App from "./App.vue";import router from "./router";const app = createApp(App);app.use(router);app.mount("#app");

在 App.vue 中添加入口

//App.vue
<script setup lang="ts">
import { RouterView } from "vue-router";
</script><template><RouterLink to="/home">首页</RouterLink><RouterLink to="/about">关于</RouterLink><RouterView></RouterView>
</template><style scoped></style>

1.4 运行项目

运行项目

npm run dev

启动后,点击【首页】【关于】会显示对应页面内容 

2. Pinia 集成

2.1 安装 Pinia

通过 pnpm 安装 Pinia

pnpm install pinia

2.2 配置 Pinia

在 src 文件夹下新建文件夹 stores,根据项目需要在 stores 下新建容器 ts 文件,此处示例新建文件 counter.ts

//counter.ts
import { defineStore } from "pinia";
import { ref } from "vue";export const useCounterStore = defineStore("counter", () => {//vue3中的setup函数const count = ref(0);const increment = () => {count.value++;};return { count, increment };
});

2.3 引用 Pinia

在 main.ts 中引入 Pinia

//main.ts
import { createApp } from "vue";
import "./style.css";
import App from "./App.vue";import router from "./router";
import { createPinia } from "pinia";const app = createApp(App);
const pinia = createPinia();app.use(router);
app.use(pinia);app.mount("#app");

在 App.vue 中应用

//App.vue
<template><RouterLink to="/home">首页</RouterLink><RouterLink to="/about">关于</RouterLink>{{ store.count }}<button @click="store.increment">+</button><RouterView></RouterView>
</template><script lang="ts" setup>
import { useCounterStore } from "./stores/counter";
const store = useCounterStore();
</script><style scoped></style>

2.4 运行项目

 运行项目

npm run dev

启动后,点击【+】按钮,数字相应增加 

3 其他配置

3.1 配置别名

在 vite.config.ts 中配置别名,这样后续写路径更便捷

//vite.config.ts
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import path from "path";// https://vite.dev/config/
export default defineConfig({resolve: {alias: [{ find: "@", replacement: path.resolve(__dirname, "src") }]},plugins: [vue()]
});

这样路由中配置可修改成

//router/index.ts
import {createRouter,createWebHistory,type RouteRecordRaw
} from "vue-router";const routes: RouteRecordRaw[] = [{path: "/home",component: () => import("@/views/Home.vue")},{path: "/about",component: () => import("@/views/About.vue")}
];export default createRouter({routes, //路由表history: createWebHistory() //路由模式
});

3.2 配置 tsconfig

上面配置别名后,代码可以正常运行,但代码中会出现 TypeScrip 的飘红报错,还需修改一下 TypeScrip 的配置。

如图,TypeScrip 的配置文件有三个。

在Vue 3项目中,这三个 TypeScript 配置文件有不同的用途:

  • tsconfig.json: 这是项目的根配置文件,定义了TypeScript编译器的全局选项,比如编译目标、模块系统、包含和排除的文件等。

  • tsconfig.app.json: 这个文件通常继承自tsconfig.json,并为Vue应用的前端源代码提供特定的编译选项。它可能包含针对前端构建的优化设置,比如特定的路径别名或不同的编译输出目录。

  • tsconfig.node.json: 这个文件同样继承自tsconfig.json,但它是为Node.js环境中的代码(如服务器端渲染或构建脚本)设计的。它可能包含Node.js特定的编译选项,比如不同的模块解析策略。

简而言之,tsconfig.json 是基础配置,而 tsconfig.app.json 和 tsconfig.node.json 是针对不同运行环境的定制配置。

这里我们配置 tsconfig.app.json,添加 baseUrl 和 paths。

//tsconfig.app.json
{"extends": "@vue/tsconfig/tsconfig.dom.json","compilerOptions": {"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",/* Linting */"strict": true,"noUnusedLocals": true,"noUnusedParameters": true,"noFallthroughCasesInSwitch": true,"noUncheckedSideEffectImports": true,"baseUrl": ".","paths": {"@/*": ["src/*"]}},"include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"]
}

配置好以后,就不会报错了。(如果还有飘红,就重启编辑器即可)

3.3 安装 Vue-official 插件

如下图,在 vscode 中搜索 Vue-official 插件,安装 Vue-official 插件。

Vue-Official 是 Vue 的 VSCode 官方插件,原名 Volar,提供语法高亮、代码片段、智能感知和错误检查等功能,支持 Vue 2 和 Vue 3,特别适用于 Vue3.4 以上版本,新增了对Vue3.4 新特性的支持,如属性同名简写和拖拽导入组件。该插件集成了 Vetur 的功能并有所增强,建议在 Vue 3 项目中使用时禁用 Vetur

安装后,点击图标,选择【添加到工作区建议】。

点击后,会在项目文件夹 .vscode 下的 extensions.json 中添加配置,没有的话手动添加一下。

4 Element-plus 集成

4.1 安装 element-plus

通过 pnpm 安装 element-plus 组件库

pnpm install element-plus

4.2 引用 element-plus

在 main.ts 中引入 element-plus

//main.ts
import { createApp } from "vue";
import "./style.css";
import App from "./App.vue";import router from "./router";
import { createPinia } from "pinia";
import ElementPlus from "element-plus";
import "element-plus/dist/index.css";const app = createApp(App);
const pinia = createPinia();app.use(router);
app.use(pinia);
app.use(ElementPlus);
app.mount("#app");

修改 tsconfig.app.json 配置,增加 element-plus 类型提示

配置好后,在页面中应用 element-plus 组件就会有提示,这样可以提高开发效率。

在 App.vue 中应用

//App.vue
<template><RouterLink to="/home">首页</RouterLink><RouterLink to="/about">关于</RouterLink>{{ store.count }}<button @click="store.increment">+</button><RouterView></RouterView><el-button type="primary">按钮</el-button>
</template><script lang="ts" setup>
import { useCounterStore } from "./stores/counter";
const store = useCounterStore();
</script><style scoped></style>

 4.4 运行项目

 运行项目

npm run dev

启动后,可正常显示 element-plus 组件

以上,我们的代码基本就搭建好了。

下一篇将探讨样式图标、按需导入等内容,敬请期待~


http://www.ppmy.cn/news/1562727.html

相关文章

LLM - Llama 3 的 Pre/Post Training 阶段 Loss 以及 logits 和 logps 概念

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/145056912 Llama 3 是 Meta 公司发布的开源大型语言模型&#xff0c;包括具有 80 亿和 700 亿参数的预训练和指令微调的语言模型&#xff0c;支持…

spring mvc源码学习笔记之七

我们都知道&#xff0c;spring mvc 有处理器适配器、处理器映射器、视图解析器等几个非常重要的核心组件&#xff0c;学习 spring mvc 就是学习这些组件。 本文我们就来简单看下这些组件的默认值。 下面这段代码是从 DispatcherServlet 的源码中拷贝的 static {// Load defau…

pip工具安装第三方库

使用pipcmd引入第三方库 pip 是 Python 包管理工具&#xff0c;提供了对 Python 包的查找、下载、安装、卸载的功能。 注意&#xff1a;pip 已内置于 Python 3.4 和 2.7 及以上版本&#xff0c;其他版本需另行安装 常规命令&#xff1a; pip install 安装第三方库的库名 &…

在UE5中使用视差贴图

视差贴图是一项不用改动模型顶点&#xff0c;通过对相机向量进行计算、修改通过视差实现模型凹凸感的技术&#xff0c;通常运用于地面&#xff0c;配合法线贴图增强凹凸表现。 UE中封装了视差贴图节点ParallaxOcclusionMapping&#xff0c;可以很方便的制作出效果较好的视差效…

Web前端界面开发

前沿&#xff1a;介绍自适应和响应式布局 自适应布局&#xff1a;-----针对页面1个像素的变换而变化 就是我们上一个练习的效果 我们的页面效果&#xff0c;随着我们的屏幕大小而发生适配的效果&#xff08;类似等比例&#xff09; 如&#xff1a;rem适配 和 vw/vh适配 …

幽默的人生

想当年&#xff0c;在高中那会儿&#xff0c;我就像被束缚的风筝&#xff0c;想飞却飞不高&#xff0c;做不了自己心爱的小发明&#xff0c;全被家人那句“好大学才是正道”给拽住了。但大学毕业后&#xff0c;嘿&#x1f60e;&#xff0c;我终于挣脱了束缚&#xff0c;可以自由…

有一台服务器可以做哪些很酷的事情

有一台服务器可以做哪些很酷的事情 今天我也来简单分享一下&#xff0c;这几年来&#xff0c;我用云服务器做了哪些有趣的事情。 服务器推荐 1. 个人博客 拥有个人服务器&#xff0c;你可以完全掌控自己的网站或博客。 与使用第三方托管平台相比&#xff0c;你能自由选择网站…

现代JavaScript开发

现代JavaScript开发 开发 代码的模块化&#xff0c;方便维护和复用。这些模块化可能是我们自己使用的模块也有可能第三方包&#xff1b;第三方包有都可以从npm中下载到&#xff08;包含开源包&#xff0c;以便我们自己的代码中包含第三方代码&#xff0c;比如react、jQuery&a…