Vue3 + Vite + TypeScript + Element-Plus创建管理系统项目

官方文档

Vue3官网
Vite官方中文文档

创建项目

使用npm命令创建项目:

npm create vite@latest

输入项目名称:

? Project name:项目名

选择vue:

? Select a framework: » - Use arrow-keys. Return to submit.Vanilla
>   VueReactPreactLitSvelteSolidQwikOthers

选择TS:

? Select a variant: » - Use arrow-keys. Return to submit.
>   TypeScriptJavaScriptCustomize with create-vue ↗Nuxt ↗

创建完成:

Done. Now run:cd smart-community-managernpm installnpm run dev

打开项目,先 npm install安装,然后npm run dev启动项目,成功如下:
在这里插入图片描述

安装Vite自动导入的语法插件

unplugin-vue-components
unplugin-auto-import

unplugin-auto-import 插件作用举例:

// 使用 unplugin-auto-import 自动引入后就不需要手动一个个import
// import { computed, ref } from 'vue'const count = ref(2)
const doubled = computed(() => count.value * 2)

unplugin-vue-components 插件作用举例:

<script setup lang="ts">
// 使用组件时不再需要导入,可以直接使用
// import HelloWorld from './components/HelloWorld.vue'
</script><template><HelloWorld msg="Vite + Vue" />
</template>

安装:

npm install -D unplugin-vue-components unplugin-auto-import

修改 vite.config.ts文件:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
// 自动导入vue中hook reactive ref等
import AutoImport from "unplugin-auto-import/vite"
//自动导入ui-组件 比如说ant-design-vue  element-plus等
import Components from 'unplugin-vue-components/vite';// https://vitejs.dev/config/
export default defineConfig({plugins: [vue(),AutoImport({//安装后在组件中不用再导入ref,reactive等imports: ['vue', 'vue-router', 'pinia'], // 自动引入的三方库//存放的位置dts: "src/types/auto-import.d.ts" // 全局自动引入文件存放路径;不配置保存在根目录下;配置为false时不会生成 auto-imports.d.ts 文件,但不影响使用}),Components({dts: "src/types/components.d.ts" // 引入组件的,包括自定义组件存放的位置})],
})

使用Element-Plus

安装:

# 选择一个你喜欢的包管理器# NPM
$ npm install element-plus --save# Yarn
$ yarn add element-plus# pnpm
$ pnpm install element-plus

按需自动导入:(需要先完成上一步对`unplugin-vue-components unplugin-auto-import``两个插件的安装)

// vite.config.ts
import { defineConfig } from 'vite'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' //添加export default defineConfig({// ...plugins: [// ...AutoImport({resolvers: [ElementPlusResolver()], // 添加}),Components({resolvers: [ElementPlusResolver()], // 添加}),],
})

这样就可以直接使用Element-Plus里面的组件了。

安装Router

  • 安装:
npm install vue-router
  • 配置路由:
    src目录下创建一个router目录,然后在里面创建一个index.ts文件,用来配置路由,如下目录:
    src/
    ├── pages/
    │ ├── HomePage/
    │ │ └── index.vue
    │ └── ErrorPage/
    │ └── index.vue
    └── App.vue
// src/router/index.ts
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';
import HomePage from '../pages/HomePage/index.vue';
import ErrorPage from '../pages/ErrorPage/index.vue';const routes: RouteRecordRaw[] = [{path: '/',component: HomePage},{path: '/error',component: ErrorPage},// 可以添加其他路由
];const router = createRouter({history: createWebHistory(),routes
});export default router;

注意:导入组件时提示无法找到模块“…/pages/HomePage/index.vue”的声明文件。“…src/pages/HomePage/index.vue”隐式拥有 “any” 类型。ts(7016)
在这里插入图片描述
问题:这是因为 TypeScript 不知道 .vue 文件的类型。你可以通过创建一个 shims-vue.d.ts 文件来告诉 TypeScript 如何处理 .vue 文件。

解决方法:在你的 src 目录下创建一个shims-vue.d.ts文件:

// shims-vue.d.ts
declare module '*.vue' {import { DefineComponent } from 'vue';const component: DefineComponent<{}, {}, any>;export default component;
}

然后,在 index.ts 文件中导入 .vue 文件时,TypeScript 就不会报错了。

  • 使用路由:
    在 main.ts 文件中使用这个路由:
// src/main.ts
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';createApp(App).use(router).mount('#app');
  • 展示页面
    在App.vue中可以通过<RouterView />标签进行展示路由页面
<template><RouterView />
</template>

安装pinia

  • 安装:
npm install pinia
  • main.ts中导入pinia:
···
import { createPinia } from 'pinia'; // 添加
const pinia = createPinia() // 添加
···
// 添加.use(pinia)
createApp(App).use(router).use(pinia).mount('#app')
  • 使用pinia:
    新建src/store/index.ts文件,并初始化如下内容:
import { defineStore } from "pinia";
export const UserStore = defineStore('user',{state:() => {return {// 自己定义的属性数据count:0}},getters: {// 定义对state中数据的计算属性doubleCount:(state) => {return state.count += 1}},// 可以写同步和异步的代码actions: {addCount(){this.count++},subCount(){setTimeout(()=>{this.count --},1000)}}
})
  • 页面中使用pinia:
<script setup>
import { useUserStore } from '../../store';
const userStore = useUserStore()
</script><template><h1>count:{{ userStore.count }}</h1><h1>Double Count: {{ userStore.doubleCount }}</h1><el-button type="primary" @click="userStore.addCount">+1</el-button><el-button type="danger" @click="userStore.subCount">1秒后-1</el-button>
</template>

效果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/6503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jupyter notebook 设置密码报错ModuleNotFoundError: No module named ‘notebook.auth‘

jupyter notebook 设置密码报错ModuleNotFoundError: No module named ‘notebook.auth‘ 原因是notebook新版本没有notebook.auth 直接输入以下命令即可设置密码 jupyter notebook password

「JavaEE」线程安全2:内存可见性问题 wait、notify

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;JavaEE &#x1f387;欢迎点赞收藏加关注哦&#xff01; 内存可见性问题& wait、notify &#x1f349;Java 标准库的线程安全类&#x1f349;内存可见性问题&#x1f34c;volatile 关键字 …

M2M vs. IoT?

有任何关于GSMA\IOT\eSIM\RSP\业务应用场景相关的问题&#xff0c;欢迎W: xiangcunge59 一起讨论, 共同进步 (加的时候请注明: 来自CSDN-iot). 连接设备已经开辟了创造价值和解决重大世界问题的广泛机会&#xff0c;例如可持续发展。 今天&#xff0c;我们网络设备的方式可…

【linuxC语言】vfork、wait与waitpid函数

文章目录 前言一、函数使用1.1 vfork1.2 wait1.3 waitpid 二、示例代码总结 前言 在Linux系统编程中&#xff0c;vfork()、wait() 和 waitpid() 函数是处理进程管理和控制流的重要工具。这些函数允许我们创建新进程、等待子进程结束并获取其退出状态&#xff0c;从而实现进程间…

GDPU JavaWeb 猜字母游戏

他在对你重定向打卡的大饼与立即跳转到你面前的谎言之间反复横跳。 sendRedirect与forward sendRedirect与forward区别 sendRedirect用于将请求重定向到另一个资源&#xff0c;可以是同一个应用程序内的其他 Servlet&#xff0c;也可以是其他 Web 应用程序的资源&#xff0c;…

农作物害虫检测数据集VOC+YOLO格式18975张97类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;18975 标注数量(xml文件个数)&#xff1a;18975 标注数量(txt文件个数)&#xff1a;18975 标…

C++入门系列-类对象模型this指针

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 类对象模型 如何计算类对象的大小 class A { public:void printA(){cout << _a << endl;} private:char _a; }; 算算看&#xff0c;这个类的大小是多少 我们知道…

掌握JavaScript面向对象编程核心密码:深入解析JavaScript面向对象机制对象概念、原型模式与继承策略全面指南,高效创建高质量、可维护代码

ECMAScript&#xff08;简称ES&#xff0c;是JavaScript的标准规范&#xff09;支持面向对象编程&#xff0c;通过构造函数模拟类&#xff0c;原型链实现继承&#xff0c;以及ES6引入的class语法糖简化面向对象开发。对象可通过构造函数创建&#xff0c;使用原型链共享方法和属…

从0开始linux(1)——文件操作

欢迎来到博主的专栏——从0开始linux 博主ID&#xff1a;代码小豪 博主使用的linux发行版是&#xff1a;CentOS 7.6 不同版本下的操作可能存在差异 文章目录 命令文件操作命令文件树和文件路径文件树绝对路径相对路径 文件属性tree指令删除文件复制文件 大家还记得在小学第一次…

Amazon EKS创建EBS的存储类

1、创建 Amazon EBS CSI 驱动程序 IAM 角色 相关文档 先决条件&#xff0c;是否有 IAM OIDC 提供商&#xff0c;详情 IAM OIDC 提供商创建文档 IAM OIDC 提供商id 在 Select trusted entity&#xff08;选择受信任的实体&#xff09;页面上操作&#xff0c;最后点击下一步 在…

代码随想录算法训练营第25天 | 216.组合总和III、17.电话号码的字母组合

代码随想录算法训练营第25天 | 216.组合总和III、17.电话号码的字母组合 自己看到题目的第一想法看完代码随想录之后的想法 链接: 216.组合总和III 链接: 17.电话号码的字母组合 自己看到题目的第一想法 216.组合总和III&#xff1a;递归函数终止条件为搜索得到的数相加为n&…

ssh远程访问windows系统下的jupyterlab

网上配置这一堆那一堆&#xff0c;特别乱&#xff0c;找了好久整理后发在这里 由于既想打游戏又想做深度学习&#xff0c;不舍得显卡性能白白消耗&#xff0c;这里尝试使用笔记本连接主机 OpenSSH 最初是为 Linux 系统开发的&#xff0c;现在也支持包括 Windows 和 macOS 在内…

【JAVA项目】基于SSM的【寝室管理系统设计】

技术简介&#xff1a;采用B/S架构、ssm 框架和 java 开发的 Web 框架&#xff0c; eclipse开发工具。 系统简介&#xff1a;寝室管理设计的主要使用者分为管理员、宿舍长和学生&#xff0c;实现功能包括管理员权限&#xff1a;首页、个人中心、学生管理、宿舍号管理、宿舍长管理…

链舞算法谱---链表经典题剖析

前言&#xff1a;探究链表算法的奥秘&#xff0c;解锁编程新世界&#xff01; 欢迎来到我的链表算法博客&#xff0c;这将是您深入了解链表算法&#xff0c;提升编程技能的绝佳机会。链表作为数据结构的重要成员之一&#xff0c;其动态性和灵活性在实现某些功能上发挥不可替代的…

生成树协议(STP,MSTP,RSTP)详解

目录 STP生成树协议 二层环路出现的原因&#xff1a; 二层环路引发的危害&#xff1a; stp生成树防环的基本思路&#xff1a; 802.1D生成树协议&#xff1a; 配置BPDU的报文结构&#xff1a; 配置BPDU中某些字段的解析&#xff1a; TCN BPDU报文格式&#xff1a; stp中…

Java中接口的默认方法

为什么要使用默认方法 当我们把一个程序的接口写完后 用其他的类去实现&#xff0c;此时如果程序需要再添加一个抽象方法的时候我们只有两种选择 将抽象方法写在原本的接口中 但是这样写会导致其他所有改接口的实现类都需要实现这个抽象方法比较麻烦 写另一个接口 让需要的实…

程序的机器级表示——Intel x86 汇编讲解

往期地址&#xff1a; 操作系统系列一 —— 操作系统概述操作系统系列二 —— 进程操作系统系列三 —— 编译与链接关系操作系统系列四 —— 栈与函数调用关系操作系统系列五 —— 目标文件详解操作系统系列六 —— 详细解释【静态链接】操作系统系列七 —— 装载操作系统系列…

基于肤色模型的人脸识别FPGA实现,包含tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 matlab2022a的测试结果如下&#xff1a; vivado2019.2的仿真结果如下&#xff1a; 将数据导入到matlab中&#xff0c; 系统的RTL结构图如下图所示…

多态的原理

前言:以下的内容均是在VS2019的环境中&#xff0c;32位平台下的 目录 1.多态的实现条件 虚函数重写的两个例外 一个题加深理解 总结 重载 重写 重定义区别 2.多态的实现原理 单继承 多继承 动态多态和静态多态 多态的好问题 1.多态的实现条件 虚函数&#xff1a;被…

使用Ruoyi的定时任务组件结合XxlCrawler进行数据增量同步实战-以中国地震台网为例

目录 前言 一、数据增量更新机制 1、全量更新机制 2、增量更新机制 二、功能时序图设计 1、原始请求分析 2、业务时序图 三、后台定时任务的设计与实现 四、Ruoyi自动任务配置 1、Ruoyi自动任务配置 2、任务调度 总结 前言 在之前的相关文章中&#xff0c;发表文章列…