vue组件和插件使用

news2024/9/20 22:47:09

前端组件

1、安装pinia(Vue 的专属状态管理库):

npm install pinia

2、安装pinia-plugin-persistedstate(持久存储插件):

npm install pinia-plugin-persistedstate

浏览器刷新时,有些数据希望是保存下来的。如用户登录后,用户信息会存储在全局状态中,如果不持久化状态,那么每次刷新用户都需要重新登录了,所以要用到pinia。

3、安装element-plus(基于Vue3的组件库,提供了一套现代、优雅的 UI 组件):

npm install element-plus

4、安装Axios(前端用于和后端交互):

npm install axios

5、安装svg插件:

npm install vite-plugin-svg-icons -D

如果npm检测到漏洞使用npm audit查看详细信息,使用npm audit fix自动修复

6、安装nprogress进度条插件:

npm install nprogress

7、按照项目框架搭建目录、文件、代码:如router、views、store、api…

前端组件使用基本内容

pinia使用

src目录下创建store目录,store目录下创建文件index.ts

import {createPinia} from "pinia";
import piniaPluginPersistedstate from "pinia-plugin-persistedstate";

const pinia = createPinia();
pinia.use(piniaPluginPersistedstate)
export default pinia;

main.ts中引入pinia

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import router from './router'
import pinia from "./store";

const app = createApp(App)
app.use(router)
app.use(pinia)
app.mount('#app')

element-plus使用

main.ts中引入element-plus

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import router from './router'
import pinia from "./store";
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
//导入element-plus图标
import  * as ElementPlusIconsVue from '@element-plus/icons-vue'

const app = createApp(App)
app.use(router)
app.use(pinia)
//将图标进行全局注册
for (const [key,component] of Object.entries(ElementPlusIconsVue)) {
    app.component(key,component)
}
app.use(ElementPlus)
app.mount('#app')

Axios使用

src目录下创建api目录,api目录下创建文件request.ts文件

import axios from "axios"

const service = axios.create({
    baseURL: "http://localhost:8081",
    timeout:1000*100
})
export default service

svg插件使用

在vite.config.ts中配置vite-plugin-svg-icons插件

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import path from 'path'


// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
      vue(),
      createSvgIconsPlugin({
        //指定需要缓存的图标文件夹
        iconDirs:[path.resolve(process.cwd(),"src/icons/svg")],
        //指定SymbolId格式
        symbolId:"icon-[dir]-[name]"
      })
  ],
})


在src/components创建SvgIcon目录,SvgIcon目录下创建Index.vue

<script  lang="ts" >
import {computed} from "vue"

export default {
  name: "baseSvgIcon",
  props: {
    iconClass: {type: String},
    className: {type: String}
  },
  setup(props){
    const iconName  = computed(()=>{
      return props.iconClass ?`#icon-${props.iconClass}` :'#icon'
    })

    const svgClass  = computed(()=>{
      return props.className ?`#icon-${props.className}` :'svg-icon'
    })
    return  {iconName, svgClass}
  }
}
</script>

<template>
<svg :class="svgClass" aria-haspopup="true">
  <use :xlink:href="iconName"></use>
</svg>
</template>

<style scoped>
.svg-icon {
  width: 1em;
  height: 1em;
  vertical-align: -0.15em;
  fill: currentColor;
  overflow: hidden;
}
</style>

创建src/icons/svg目录,在目录中放入任意图标
在这里插入图片描述

在main.ts全局注册组件

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import router from './router'
import pinia from "./store";
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
//导入element-plus图标
import  * as ElementPlusIconsVue from '@element-plus/icons-vue'
//svg-icons注册导入
import 'virtual:svg-icons-register'
import SvgIcon from "./components/SvgIcon/index.vue";


const app = createApp(App)
app.use(router)
app.use(pinia)
//将图标进行全局注册
for (const [key,component] of Object.entries(ElementPlusIconsVue)) {
    app.component(key,component)
}
app.use(ElementPlus)
app.component('svg-icon', SvgIcon)
app.mount('#app')

nprogress 插件使用

src目录下新建config目录,config目录下新建nprogress.ts文件

import NProgress from 'nprogress'
import 'nprogress/nprogress.css'

NProgress.configure({
    easing: 'ease',//动画方式
    speed: 500,//递增进度条速度
    showSpinner: true,//是否显示加载Icon
    trickleSpeed: 200,//自动递增间隔
    minimum:0.3//初始化时的最小百分比
})

export default NProgress

在src/router/index.ts文件中添加代码,针对路由跳转设置进度条

//导入vue-router模块
import {createRouter,createWebHashHistory} from "vue-router"
import Nprogress from "../config/nprogress.ts";

//定义路由
const routers = [{
    path:"/",
    name:"login",
    meta: {title:"后台登录管理系统"},
    component: ()=> import("../views/Login.vue")

}]

//创建路由实例并传递router配置
const router = createRouter({
    history: createWebHashHistory(),
    routes:routers

})
//路由拦截守卫
router.beforeEach(async (to, from, next) => {
    //1、Nprogress开始
    Nprogress.start()
    next()
})
//路由跳转结束
router.afterEach(async (to, from, next) => {
    Nprogress.done()
})
//路由跳转失败
router.onError(error => {
    console.warn("路由错误:",error.message)
})
export default router

style.css中修改进度条样式

:root {
  font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
  line-height: 1.5;
  font-weight: 400;

  color-scheme: light dark;
  color: rgba(255, 255, 255, 0.87);
  background-color: #242424;

  font-synthesis: none;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

a {
  font-weight: 500;
  color: #646cff;
  text-decoration: inherit;
}
a:hover {
  color: #535bf2;
}

body {
  margin: 0;
  display: flex;
  place-items: center;
  min-width: 320px;
  min-height: 100vh;
}

h1 {
  font-size: 3.2em;
  line-height: 1.1;
}

button {
  border-radius: 8px;
  border: 1px solid transparent;
  padding: 0.6em 1.2em;
  font-size: 1em;
  font-weight: 500;
  font-family: inherit;
  background-color: #1a1a1a;
  cursor: pointer;
  transition: border-color 0.25s;
}
button:hover {
  border-color: #646cff;
}
button:focus,
button:focus-visible {
  outline: 4px auto -webkit-focus-ring-color;
}

.card {
  padding: 2em;
}

#app {
  max-width: 1280px;
  margin: 0 auto;
  padding: 2rem;
  text-align: center;
}

@media (prefers-color-scheme: light) {
  :root {
    color: #213547;
    background-color: #ffffff;
  }
  a:hover {
    color: #747bff;
  }
  button {
    background-color: #f9f9f9;
  }
}

/* 使进度条显示为七彩渐变色 */
#nprogress .bar {
  height: 4px;  /* 设置进度条高度 */
  background: linear-gradient(
          to right,
          red,
          orange,
          yellow,
          green,
          blue,
          indigo,
          violet
  )!important; /* 使用线性渐变实现七彩效果 */
}

/* 修改进度条右侧的阴影颜色,使其匹配彩虹色 */
#nprogress .peg {
  box-shadow: 0 0 10px red, 0 0 5px orange, 0 0 5px yellow, 0 0 5px green, 0 0 5px blue, 0 0 5px indigo, 0 0 5px violet;
}
/* 修改右侧小圆圈为彩色 */
#nprogress .spinner-icon {
  border-top-color: red !important;
  border-right-color: orange !important;
  border-bottom-color: yellow !important;
  border-left-color: green !important;

  width: 18px !important;
  height: 18px !important;
  border-width: 3px !important;
}

/* 保持小圆圈的旋转动画 */
#nprogress .spinner-icon {
  animation: nprogress-spinner 400ms linear infinite !important;
}

/* 如果你希望小圆圈的背景透明,也可以添加以下代码 */
#nprogress .spinner {
  background: none !important;
}

在这里插入图片描述

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

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

相关文章

Scheme5.0标准之重要特性及用法实例(三十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列…

设置虚拟机使用主机以太网而不是WiF连接

虚拟机使用主机的以太网连接而不是Wi-Fi连接&#xff0c;可以通过在虚拟化软件中配置虚拟机的网络设置来实现。以下是一些常见的虚拟化软件&#xff08;如VMware和VirtualBox&#xff09;中设置虚拟机网络以使用以太网连接的步骤&#xff1a; 一、VMware中设置 1、打开虚拟网…

Python画笔案例-007 绘制水滴

1、绘制水滴 通过 python 的turtle 库绘制一个水滴的图案&#xff0c;如下图&#xff1a; 2、实现代码 今天绘制的水滴&#xff0c;在tuitle 库里并没有直接的功能可以绘制&#xff0c;我们仔细观察&#xff0c;可以看出&#xff0c;水滴往下越来越粗&#xff0c;所以我们可以…

API商品数据接口(电商数据api)——京东淘宝价格详情

众多品牌选择使用比价工具进行采购&#xff0c;主要是出于以下几个重要原因&#xff1a; 提高开发效率&#xff1a;API接口允许不同的应用程序之间高效地进行交互&#xff0c;节省了大量的人力物力成本&#xff0c;使得开发者可以将更多时间和精力集中于自身的核心业务。 增加数…

正则表达式匹配成对括号

匹配一对括号&#xff0c;用于在一个html文本中提取JSon 文本。例如 { “duration”:7599,"minBufferTime{second bracket }{third bracket} } 一对加粗的{} &#xff0c;而不要中间的{}。简单写法会出现错误匹配。 在.Net Framework的正则表达式中&#xff0c;提供了”…

在Activity中使用Toast

在Activity中使用Toast Toast是Android系统提供的一种非常好的提醒方式&#xff0c;在程序中可以使用它将一些短小的信息通知给用户&#xff0c;这些信息会在一段时间后自动消失&#xff0c;并且不会占用任何屏幕空间&#xff0c;我们现在就尝试一下如何在活动中使用Toast。 …

谷粒商城篇章11--P311-P325--秒杀服务【分布式高级篇八】

目录 1 后台添加秒杀商品 1.1 配置优惠券服务网关 1.2 添加秒杀场次 1.3 上架秒杀商品 2 定时任务 2.1 cron 表达式 2.2 cron表达式特殊字符 2.3 cron示例 3 秒杀服务 3.1 创建秒杀服务模块 3.1.1 pom.xml 3.1.2 application.yml配置 3.1.3 bootstrap.yml配置 3.…

【赵渝强老师】Docker三剑客

在Docker容器中提供了三个非常有用的工具&#xff0c;它们分别是&#xff1a;Docker Compose、Docker Machine和Docker Swarm。下面分别进行介绍。 视频讲解如下&#xff1a; Docker三剑客 【赵渝强老师】Docker的三剑客 一、容器编排工具Docker Compose 在使用Docker部署应用…

如何在 Nuxt 中动态设置页面布局

title: 如何在 Nuxt 中动态设置页面布局 date: 2024/8/24 updated: 2024/8/24 author: cmdragon excerpt: 摘要:本文介绍如何在Nuxt框架中通过设置setPageLayout函数动态调整页面布局,包括安装Nuxt、创建不同布局文件及中间件,并通过示例演示如何根据不同路径设置相应布局…

Transformer模型-1-概述、核心部件及应用场景

Transformer概述 什么是Transformer Transformer模型是由谷歌公司提出的一种基于自注意力机制的神经网络模型&#xff0c;用于处理序列数据。相比于传统的循环神经网络模型&#xff0c;Transformer模型具有更好的并行性能和更短的训练时间&#xff0c;因此在自然语言处理领域…

设计模式—工厂模式

文章目录 工厂模式1、没有使用工厂2、简单工厂模式3、工厂方法模式4、抽象工厂模式5、工厂模式小结 工厂模式 1、没有使用工厂 需求 看一个披萨的项目&#xff1a;要便于披萨种类的扩展&#xff0c;要便于维护 披萨的种类很多(比如 GreekPizz、CheesePizz 等)披萨的制作有 pr…

谷粒商城实战笔记-252~254-商城业务-消息队列-Exchange-三种type的使用

文章目录 一&#xff0c;252-商城业务-消息队列-Direct-Exchange1&#xff0c;创建4个队列2&#xff0c;exchange绑定queue3&#xff0c;发送消息 二&#xff0c;253-商城业务-消息队列-Fanout-Exchange1&#xff0c;创建一个type为fanout的exchange2&#xff0c;给这个exchang…

通过C# 读取PDF页面大小、方向、旋转角度

在处理PDF文件时&#xff0c;了解页面的大小、方向和旋转角度等信息对于PDF的显示、打印和布局设计至关重要。本文将介绍如何使用免费.NET 库通过C#来读取PDF页面的这些属性。 文章目录 C# 读取PDF页面大小&#xff08;宽度、高度&#xff09;C# 判断PDF页面方向C# 检测PDF页面…

VMWare中添加Ubuntu20.04.06镜像

一、下载Ubuntu镜像 Ubuntu20.04&#xff1a; 官方下载地址https://releases.ubuntu.com/20.04.6/ 进入官网 点击下图红框位置&#xff0c;下载镜像镜像名为ubuntu-20.04.6-desktop-amd64.iso 也可点击下面链接直接下载&#xff1a;https://releases.ubuntu.com/20.04.6/ubu…

安科瑞ACREL-7000能源管控平台在综合能耗监测系统在大型园区的应用

摘要&#xff1a;大型综合园区已经成为多种能源消耗的重要区域&#xff0c;为了探索适用于大型综合园区的综合能耗监测系统&#xff0c;建立了综合能耗监测系统整体框架&#xff0c;提出了综合能耗网络、能耗关系集合、能耗均衡度等概念&#xff0c;并以某大型综合园区为例对综…

【三维深度补全模型】PENet

【版权声明】本文为博主原创文章&#xff0c;未经博主允许严禁转载&#xff0c;我们会定期进行侵权检索。 参考书籍&#xff1a;《人工智能点云处理及深度学习算法》 本文为专栏《Python三维点云实战宝典》系列文章&#xff0c;专栏介绍地址“【python三维深度学习】python…

java结合Ai

Spring AI Spring AI提供的API支持跨人工智能提供商的 聊天,文本到图像,和嵌入模型等,同时支持同步和流API选项; 介绍 Spring AI 是 AI 工程的应用框架。其目标是将Spring生态系统的设计原则(如可移植性和模块化设计)应用于AI领域,并促进使用POJO作为应用程序的构建块…

大数据-100 Spark 集群 Spark Streaming DStream转换 黑名单过滤的三种实现方式

喜大普奔&#xff01;破百了&#xff01; 点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&a…

【精选】基于django柚子校园影院(咨询+解答+辅导)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

[240824] 微软更新导致部分 Linux 用户无法启动系统,谁之过?| Chrome 稳定版更新(128.0.6613.84)

目录 微软更新导致部分 Linux 用户无法启动系统&#xff0c;谁之过&#xff1f;Chrome 稳定版更新 (128.0.6613.84) 微软更新导致部分 Linux 用户无法启动系统&#xff0c;谁之过&#xff1f; 最近&#xff0c;微软推送的一项 Windows 更新导致部分 Linux 用户无法启动系统&am…