新建vue项目和安装第三方库

安装vue

打开vscode编辑器,按Ctrl+`组合键打开终端,在命令行中运行以下命令

npm create vue@latest

项目初始化完成,可执行以下命令:

cd vue-project --切换到项目目录
npm install   -- 安装依赖包
npm run dev  -- 运行项目

安装 Element Plus

npm install element-plus --save

自动导入Element Plus组件
首先你需要安装unplugin-vue-components 和 unplugin-auto-import这两款插件

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

然后把下列代码插入到你的 Vite 配置文件中

// 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 提供的一套常用的图标集合:

npm install @element-plus/icons-vue

注册所有图标

// main.ts// 如果您正在使用CDN引入,请删除下面一行。
import * as ElementPlusIconsVue from '@element-plus/icons-vue'const app = createApp(App)
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {app.component(key, component)
}

按需注册图标

// main.ts
import { HomeFilled, Platform} from '@element-plus/icons-vue'
const app = createApp(App)
app.component('HomeFilled', HomeFilled)
.component('Platform', Platform)

安装VueUse

npm i @vueuse/core

Element Plus使用VueUse自定义主题

import { useCssVar } from '@vueuse/core'const el = ref(null)
const color1 = useCssVar('--color', el)const elv = ref(null)
const key = ref('--color')
const colorVal = useCssVar(key, elv)const someEl = ref(null)
const color2 = useCssVar('--color', someEl, { initialValue: '#eee' })

安装unplugin-vue-router(基于文件的vue-router插件)

npm install -D unplugin-vue-router

你可以将 vue-router/auto 从VSCode的导入建议中排除,方法是将这个设置添加到 .vscode/settings.json : (编辑器当前项目的.vscode文件夹里新建一个settings.json)

{"typescript.tsdk": "node_modules/typescript/lib","typescript.preferences.autoImportFileExcludePatterns": ["vue-router/auto$"]
}

添加此插件后,启动开发服务器(通常为 npm run dev )以生成 typed-router.d.ts 类型的第一个版本,该版本应与 “moduleResolution”: “Bundler” 一起添加到 tsconfig.json 。它应该是这样的:

{"include": [// other files..."./typed-router.d.ts"],"compilerOptions": {// ..."moduleResolution": "Bundler",// ...}
}

然后,如果你有一个像 npm vue create 创建的 env.d.ts 文件,添加 unplugin-vue-router/client 类型:

/// <reference types="vite/client" />
/// <reference types="unplugin-vue-router/client" />

如果你没有 env.d.ts 文件,你可以创建一个并添加unplugin-vue-router类型,或者你可以将它们添加到 tsconfig.json types 属性中:

{"compilerOptions": {// ..."types": ["unplugin-vue-router/client"]}
}

安装vite-plugin-vue-layouts布局插件

npm install -D vite-plugin-vue-layouts

如果你想要 virtual:generated-layouts 的类型定义,将 vite-plugin-vue-layouts/client 添加到 tsconfig 的 compilerOptions.types :

{"compilerOptions": {"types": ["vite-plugin-vue-layouts/client"]}
}

vue-router

import { createRouter } from 'vue-router'
import { setupLayouts } from 'virtual:generated-layouts'
import generatedRoutes from '~pages'const routes = setupLayouts(generatedRoutes)const router = createRouter({// ...routes,
});

unplugin-vue-router

import { createRouter } from 'vue-router/auto'
import { setupLayouts } from 'virtual:generated-layouts'const router = createRouter({// ...extendRoutes: (routes) => setupLayouts(routes),
})

router/index.ts

//router/index.ts
import { createRouter, createWebHistory } from "vue-router/auto";
import { setupLayouts } from "virtual:generated-layouts";
import { routes } from "vue-router/auto-routes";const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),extendRoutes: (routes) => setupLayouts(routes),
});console.log(routes);
export default router;

tsconfig.app.json

// tsconfig.app.json
{"extends": "@vue/tsconfig/tsconfig.dom.json","include": ["env.d.ts", "src/**/*", "src/**/*.vue", "./typed-router.d.ts"],"exclude": ["src/**/__tests__/*"],"compilerOptions": {"composite": true,"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo","baseUrl": ".","paths": {"@/*": ["./src/*"]},"moduleResolution": "Bundler","types": ["element-plus/global","unplugin-vue-router/client","vite-plugin-vue-layouts/client",]}
}

vite.config.ts

//vite.config.ts
import { fileURLToPath, URL } from 'node:url'import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'import VueRouter from 'unplugin-vue-router/vite'
import Layouts from 'vite-plugin-vue-layouts';// https://vitejs.dev/config/
export default defineConfig({ssr: {noExternal: ['vue-router'],},plugins: [VueRouter({/* options */routesFolder: [{src: 'src/views',},],extendRoute(route){// if (route["node"].value.overrides.remove)//   {//     // Move metadata to parent, depends on your use cases//     if(route.parent)//        route?.parent.addToMeta(route["node"].value.overrides.meta);//     // Remove from routing table     //      route.delete();//   } //   else if(route.path !== '' && !route.path.includes("/") ){ //排除index.vue,排除文件夹if(route.path.includes(":")){// console.log("fullPath:  ",route.fullPath)// console.log(route.name.slice(0,route.name.lastIndexOf("/")));// console.log(route.fullPath.slice(route.fullPath.lastIndexOf("/")));route.path= route.name.slice(0,route.name.lastIndexOf("/"))+route.fullPath.slice(route.fullPath.lastIndexOf("/"))      }else{route.path = route.name;         }}//  console.log(route.name,"   path:",route.path,"    fullPath:",route.fullPath)}  }),vue(),Layouts(),AutoImport({// imports: [//   'vue',// ],resolvers: [ElementPlusResolver()],}),Components({resolvers: [ElementPlusResolver()],// relative paths to the directory to search for components.dirs: [],// search for subdirectoriesdeep: true,}),],resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url))}}
})

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

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

相关文章

大数据架构对比记录

Lambda架构 -维护两套项目&#xff0c;开发和维护成本高 -两套链路&#xff0c;数据容易不一致 -数据计算成本大&#xff08;例如原定每小时计算一次&#xff0c;但有额外新需求需要计算两点半-三点半之间数据&#xff0c;则需要重新计算&#xff09; Kappa -过于依赖kafka消…

FPGA:基于复旦微FMQL10S400 /FMQL20S400 国产化核心板

复旦微电子是国内集成电路设计行业的领军企业之一&#xff0c;早在2000年就在香港创业板上市&#xff0c;成为行业内首家上市公司。公司的RFID芯片、智能卡芯片、EEPROM、智能电表MCU等多种产品在市场上的占有率位居行业前列。 今天介绍的是搭载复旦微 FMQL10S400/FMQL20S400的…

嵌入式Linux应用开发基础-现有动态库so的使用

前言 最近做嵌入式Linux项目&#xff0c;需要调用客户提供的现成的动态库(so文件&#xff0c;包含对应头文件)&#xff0c;我这边用的是cmake来构建。 此篇文章主要是记录一下嵌入式Linux的动态库的使用&#xff0c;与君共勉&#xff01; 一、通过cmake使用so库和对应的头文件…

01数据结构 - 顺序表

这里是只讲干货不讲废话的炽念&#xff0c;这个系列的文章是为了我自己以后复习数据结构而写&#xff0c;所以可能会用一种我自己能够听懂的方式来描述&#xff0c;不会像书本上那么枯燥和无聊&#xff0c;且全系列的代码均是可运行的代码&#xff0c;关键地方会给出注释^_^ 全…

C++客户端Qt开发——常用控件(容器类控件)

6.容器类控件 ①GroupBox 带标题分组框 属性 说明 title 分组框的标题 alignment 分组框内部内容的对齐方式 flat 是否是"扁平"模式 checkable 是否可选择 设为true,则在title前方会多出一个可勾选的部分. check 描述分组框的选择状态&#xff08;前提…

数据结构(5.1)——树的性质

结点数总度数1 结点的度——结点有几个孩子(分支) 度为m的树、m叉树的区别 度为m的树第i层至多有 个结点(i>1) 高度为h的m叉树至多有 个结点 高度为h的m叉树至少有h个结点 、高度为h&#xff0c;度为m叉树至多有hm-1个结点 具有n个结点的m叉树的最小高度为 总结

通过角点进行水果的果梗检测一种新方法

一、前言 在前面的《数字图像处理与机器视觉》案例一&#xff08;库尔勒香梨果梗提取和测量&#xff09;中主要使用数学形态学的方法进行果梗提取&#xff0c;下面给出一种提取果梗的新思路。 众所周知&#xff0c;一般果梗和果实在边缘处角度有较大突变&#xff0c;可以通过合…

探索WebKit的CSS列表与标记:美化列表的艺术

探索WebKit的CSS列表与标记&#xff1a;美化列表的艺术 CSS列表和标记是网页设计中用于增强列表展示效果的重要工具。WebKit&#xff0c;作为多种现代浏览器的内核&#xff0c;包括Safari、QQ浏览器等&#xff0c;提供了对CSS列表和标记的广泛支持。本文将深入探讨WebKit对CSS…

spring security源码追踪理解(一)

一、前言 近期看了spring security相关的介绍&#xff0c;再加上项目所用若依框架的底层安全模块也是spring security&#xff0c;所以想从源码的角度加深下对该安全模块的理解&#xff08;看源码之前&#xff0c;我们要先有个意识&#xff0c;那就是spring security安全模块主…

Solus Linux简介

以下是学习笔记&#xff0c;具体详实的内容请参考官网&#xff1a;Home | Solus Solus Linux 是一个独立的 Linux 发行版&#xff0c;它以其现代的设计、优化的性能和友好的用户体验而著称。以下是一些关于 Solus Linux 的最新动向和特点&#xff1a; 1. **最新版本发布**&a…

第122天:内网安全-域信息收集应用网络凭据CS 插件AdfindBloodHound

目录 前置知识 背景和思路 判断是否在域内 案例一&#xff1a;架构信息类收集-网络&用户&域控等 案例二&#xff1a;自动化工具探针-插件&Adfind&BloodHound Adfind(域信息收集工具) ​BloodHound&#xff08;自动化域渗透工具&#xff09; 前置知识 本…

计算机视觉10 总结

全卷积网络&#xff08;FCN&#xff09;是计算机视觉中用于处理图像任务的重要网络架构。 核心要点&#xff1a; 与传统 CNN 不同&#xff0c;FCN 将最后的全连接层替换为卷积层&#xff0c;从而能够处理任意尺寸的输入图像&#xff0c;并保留了空间信息。优点包括可处理不同大…

java基础万字笔记

前言 此篇文章为本人在初学java时所记录的java基础的笔记&#xff0c;其中全面记录了java的基础知识点以及自己的一些理解和要注意的点。由于该笔记是边学边记录而成&#xff0c;所以基本很多模块内都会有一些我本人后期记录的知识穿插进去&#xff0c;导致一些模块内的内容并…

搭建个人智能家居 7 - 空气颗粒物检测

搭建个人智能家居 7 - 空气颗粒物检测 前言说明PMS5003ESPHomeHomeAssistant结束 前言 到目前为止&#xff0c;我们这个智能家居系统添加了4个外设&#xff0c;分别是&#xff1a;LED灯、RGB灯、DHT11温度传感器和SGP30。今天继续添加环境测量类传感器“PMS5003空气颗粒物检测…

Django获取request请求中的参数

支持 post put json_str request.body # 属性获取最原始的请求体数据 json_dict json.loads(json_str)# 将原始数据转成字典格式 json_dict.get("key", "默认值") # 获取数据参考 https://blog.csdn.net/user_san/article/details/109654028

Windows FFmpeg 开发环境搭建

FFmpeg 开发环境搭建 FFmpeg命令行环境搭建使用FFmpeg官方编译的库Windows编译FFmpeg1. 下载[msys2](https://www.msys2.org/#installation)2. 安装完成之后,将安装⽬录下的msys2_shell.cmd中注释掉的 rem set3. 修改pacman 镜像源并安装依赖4. 下载并编译源码 FFmpeg命令行环境…

39、PHP 实现二叉树的下一个结点(含源码)

题目&#xff1a; PHP 实现二叉树的下一个结点 描述&#xff1a; 给定一个二叉树和其中的一个结点&#xff0c;请找出中序遍历顺序的下一个结点并且返回。 注意&#xff0c;树中的结点不仅包含左右子结点&#xff0c;同时包含指向父结点的指针。 <?php /*class TreeLinkN…

vite+vue3项目初始化搭建

vitevue3项目初始化搭建 "nodejs": v18.19.0 "pnpm": 8.15.0 "vue": v3.4.21 "vite": v5.2.01.创建项目 Vite中文官网 pnpm create vitelatest项目名字&#xff1a;gd_web 选择框架&#xff1a;Vue3 选择语言&#xff1a;JavaScrip…

基于springboot和mybatis的RealWorld后端项目实战三之添加swagger

pom.xml添加依赖 <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency><dependency><groupId>io.springfox</groupId><arti…

解决网页中的 video 标签在移动端浏览器(如百度访问网页)视频脱离文档流播放问题

问题现象 部分浏览器视频脱离文档流&#xff0c;滚动时&#xff0c;视频是悬浮出来&#xff0c;在顶部播放 解决方案 添加下列属性&#xff0c;可解决大部分浏览器的脱离文档流的问题 <videowebkit-playsinline""playsInlinex5-playsinlinet7-video-player-t…