从0到1实现vue3+vite++elementuiPlus+ts的后台管理系统(一)

server/2024/12/20 21:26:24/

前言:从这篇文章开始实现vue3+vite的后台管理系统,记录下自己搭建后台系统图的过程。 这篇文章完成项目的初始化和基本配置,这一步可以直接跟着vue3官网进行。整个系列只有前端部分,不涉及后端。

vue3官网:https://cn.vuejs.org/guide/quick-start.html

这是项目的nodenpm版本:

1.项目初始化

npm create vue@latest 
cd vite-ts-vueadmin 
npm install 
npm run dev

项目运行成功截图:

2.安装系统所需依赖

这个项目是用ts写的,先安装下支持typescriptnode.js支持类型文件。

npm install @types/node --save-dev

安装后,在项目根目录下建types文件夹,types/user.d.ts 创建ts的变量声明类型

interface User {token: string;avatar: string; // 头像mobile:string; //   手机号account:string; // 用户名id:number; // 用户id
}

3.然后在 vue.config.js 文件下配置

interface User {token: string;avatar: string; // 头像mobile:string; //   手机号account:string; // 用户名id:number; // 用户id
}

安装piniapiniavue2中的vuex, 安装好pinia后,在安装插件pinia-plugin-persistedstate

npm install pinia 
npm install pinia-plugin-persistedstate

使用:在store/index.ts

import { createPinia } from 'pinia'
import persist from 'pinia-plugin-persistedstate';const pinia = createPinia();
pinia.use(persist);export default pinia

pinia-plugin-persistedstate 插件可以将pinia数据自动保存到浏览器本地存储

下面的例子帮助大家理解,在页面新增登录、退出按钮,登录时将数据存到pinia,使用这个插件后发现,浏览器会同时存储这些数据。

HelloWorld.vue文件的代码如下:

<el-button type="primary" @click="login">登录</el-button>
<el-button type="primary" @click="unlogin">退出</el-button><h1>{{ msg }}</h1>import { storeToRefs } from 'pinia'
import { toRefs } from 'vue'
import { usersStore } from '@/store/user'
const store = usersStore()// storeToRefs(store) 将store中的属性解构出来,具有响应式,storeToRefs(store.userinfo) 是错误的,storeToRefs只能解构store对象为响应式对象
// 解构store中的属性 ,不使用storeToRefs
const { name,mobile } = toRefs(store.userInfo)
console.log(name.value,mobile)
const count = ref<Number>(0)
const login = ()=>{store.setUserInfo({name:'张三',mobile:13221081920,})
}
const unlogin = ()=>{store.clearUserInfo()
}

新建store/user.ts文件,定义一些登录后的信息,

import { defineStore } from 'pinia';
import { ref } from 'vue';
import type { User } from '@/types/user'; export const usersStore = defineStore('users', () => {const userInfo = ref<User>({name:'abc',avatar: '123', // 头像mobile: '13221091091', //   手机号account: 'lita', // 用户名id: 1});const setUserInfo = (u:User) =>{userInfo.value = u;}const clearUserInfo = () =>{// void 是用来创建 undefined,不管它后面跟个啥,得到的都是 undefined;userInfo.value = void 0;// 上面的代码代表 userinfo.value = undefined;}return { userInfo ,setUserInfo, clearUserInfo }
},{persist: true})

点击登录,数据会被存储到localStorage,点击退出localstorage里面的数据会清空

4.继续安装插件和组件

npm i elementui-plus
npm i unplugin-auto-import/vite
npm i unplugin-vue-components/vite

unplugin-auto-import/vite在组件内部自动import

unplugin-vue-components/vite在组件内部引入其他组件时可以省略import

ElementPlusResolver在使用elemtuiPlus组件时,无需引入,直接使用即可。

import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

vue.config.js文件中加入下面的代码:

import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'// https://vite.dev/config/
export default defineConfig({plugins: [AutoImport ({imports: ['vue','vue-router'], // 自动导入vue和vue-router相关函数resolvers: [ElementPlusResolver()],//这样就不用在main.js中使用import来导入element-plus了}),Components({resolvers: [ElementPlusResolver()] // 这样我们就可以在组件中不需要引入就可以使用elementui-plus中的组件了}),vue()],
});

http://www.ppmy.cn/server/151788.html

相关文章

Word使用分隔符实现页面部分分栏

文章目录 Word使用分隔符实现页面部分分栏分隔符使用页面设置 Word使用分隔符实现页面部分分栏 分隔符使用 word中的分隔符&#xff1a; 前面不分栏&#xff0c;后面分栏(或前面分栏&#xff0c;后面不分栏)&#xff0c;只需要在分隔位置处插入分隔符&#xff1a;“连续”即…

JAVA开发中的安全配置文件:SecurityConfig.java` (Spring Security 配置文件)

backend\src\main\java\com\mechanical\erp\config\SecurityConfig.java 是一个 Java 配置文件&#xff0c;用于配置 Spring Security。Spring Security 是一个强大的安全框架&#xff0c;用于保护应用程序的安全性&#xff0c;包括身份验证、授权、会话管理等功能。 文件路径…

APP测试中ios和androis的区别,有哪些注意点

一、运行机制不同 IOS采用的是沙盒运行机制&#xff0c;安卓采用的是虚拟机运行机制。 1、沙盒机制&#xff1a; 概念&#xff1a;沙盒是一种安全机制&#xff0c;用于防止不同应用之间互相访问 作用&#xff1a;就是存储数据&#xff0c;每个沙盒就相当于每个每个应用的系…

Airborne使用教程

1.安装环境 前提条件&#xff1a;系统已安装Ruby 打开终端输入如下命令 gem install airborne 或者在Gemfile添加 gem airborne 然后运行bundle install 2.编写脚本 在项目中新建api_tests_spec.rb文件 以GET接口"https://www.thunderclient.com/welcome"为…

C# 字符串拼接的 7 种方式及性能对比

简介 C# 提供多种字符串拼接方式&#xff0c;每种方式在性能和可读性上都有其特点。 方法 使用 号直接拼接 最简单直观的方式&#xff0c;用于拼接少量字符。 string str1 "Hello"; string str2 "World"; string result str1 " " str2;…

家校通小程序实战教程10部门管理前后端连接

目录 1 加载后端的数据2 为什么不直接给变量赋值3 保存部门信息4 最终的效果5 总结 现在部门管理已经完成了后端功能和前端开发&#xff0c;就需要在前端调用后端的数据完成界面的展示&#xff0c;而且在录入部门信息后需要提交到数据库里&#xff0c;本篇我们介绍一下前后端如…

linux CentOS系统上卸载docker

一、停止Docker服务 首先&#xff0c;需要停止Docker服务。使用systemctl命令来停止Docker服务&#xff1a; bash复制代码sudo systemctl stop docker二、卸载Docker软件包 接下来&#xff0c;使用CentOS的包管理器yum来卸载Docker软件包。根据安装的Docker版本和组件&#…

Java 初学者的第一个 SpringBoot3.4.0 登录系统

Java 初学者的第一个 SpringBoot3.4.0 登录系统 SpringBoot 3.4.0 是 SpringBoot 的最新版本&#xff0c;是乐衷与新技术的 Java 初学者和程序员的选择。和 SpringBoot3.4.0 搭配的各种软件组件也是新的潮流。Java 通用代码生成器光&#xff0c;2.4.0 电音之王尝鲜版十支持新的…