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;…

配电网光伏储能双层优化配置模型(选址定容)

随着主动配电网中不可控分布式电源(distributed generation,DG)渗透率的不断提高,其给配电网规划运行提 出了更大的挑战,可能导致配电网电压越限、清洁能源弃电 等问题。基于此,该文在规划阶段充分应用不同类型 DG 和 负荷的时序性和潮流计算特性,以及引入不同恢复率的激励…

telement-plus中table合并行或者列

#element-plus中会有自带的合并方法 通过给 table 传入span-method方法可以实现合并行或列&#xff0c; 方法的参数是一个对象&#xff0c;里面包含当前行 row、当前列 column、当前行号 rowIndex、当前列号 columnIndex 四个属性。 该函数可以返回一个包含两个元素的数组&…

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

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

minio忘记密码

安装minio 对象存储minio-CSDN博客 cat << EOF > /etc/default/minio# Volume to be used for Minio server. MINIO_VOLUMES"/data"# Use if you want to run Minio on a custom port. #MINIO_OPTS"--address :9001" MINIO_OPTS"--address …

卷积神经网络要点和难点实际案例和代码解析

卷积神经网络(Convolutional Neural Networks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。卷积神经网络仿造生物的视知觉机制构建,可以进行监督学习和非监督学习,其隐含层内的卷积核参数共享和层间连接的稀疏性使得卷积神经网络能够…

Boost读写xml

Boost读写xml 文章目录 Boost读写xml写在前面准备工作简单读写写xml读xml键值查找遍历 设置默认值异常处理 具有属性的xml写xml读xml键值查找遍历 知识补充 写在前面 ​ 前面我们讲过了如何使用Boost读写ini文件&#xff0c;这一篇我们将介绍如何用Boost读写xml文件。 ​ XML…

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&…

Rust 和 Go 哪个更好?

在讨论 Rust 与 Go 两种编程语言哪种更优秀时&#xff0c;我们将探讨它们在性能、简易性、安全性、功能、规模和并发处理等方面的比较。同时&#xff0c;我们看看它们有什么共同点和根本的差异。现在就来看看这个友好而公平的对比。 Rust 和 Go 都是优秀的选择 首先&#xff…

OD试题(11)

文章目录 1.自守数2.等差数列3.输入整形数组和排序标识&#xff0c;对其元素按照升序或降序4. 字符统计5.记负均正II 1.自守数 描述&#xff1a;自守数是指一个数的平方的尾数等于该数自身的自然数。例如&#xff1a;25^2 625&#xff0c;76^2 5776&#xff0c;9376^2 8790…

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;首页、个人中心、学生管理、宿舍号管理、宿舍长管理…