VUE3项目学习系列--项目基础配置(四)

news2025/1/15 23:21:08

目录

一、环境变量配置

 二、SVG图标配置

三、注册组件为全局组件

四、集成sass

1、安装依赖

2、添加文件

3、配置


一、环境变量配置

项目开发过程中会经历开发环境、测试环境、生产环境三种状态,对与环境变量的配置需求不同,因此需要在项目中进行环境变量的配置。

1.在项目根目录下添加如下3个文件

.env.development

.env.production

.env.test

文件中输入对应的配置信息

# 变量必须以VITE_为前缀才能暴露给外部读取
NODE_ENV = 'development'
VITE_APP_TITLE = 'vue-admin'
VITE_APP_BASE_API = '/api'
VITE_SERVE = 'http://sph-api.atguigu.cn'

在package.json中配置运行命令

 "scripts": {
    "build:test": "vue-tsc && vite build --mode test",
    "build:pro": "vue-tsc && vite build --mode production"
}

使用过程通过:import.meta.env 获取配置信息

在main.ts中引用测试,当前是开发环境因此只能打印开发环境信息:console.log(import.meta.env);

 二、SVG图标配置

1、安装依赖插件

pnpm install vite-plugin-svg-icons -D

2、在vite.config.ts中配置插件,对应的图标文件从src/assets/icons下获取,主要路径

// 引入svg
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
export default defineConfig({
  plugins: [
    vue(),
    createSvgIconsPlugin({
      iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
      symbolId: 'icon-[dir]-[name]',
    }),
   ]
})

 3、main.ts中配置插件

// svg插件配置代码
import 'virtual:svg-icons-register'

4、图标使用

(1)初级用法,直接在页面中引用

<template>
  <div>
    <h2>SVG图标测试</h2>
    <svg style="width: 50px;height:50px">
      <!-- fill颜色生效需要在图标中删除已有的fill属性值 -->
      <use xlink:href="#icon-edit" fill="red"></use>
    </svg>
  </div>
</template>

(2)封装用法

在components下创建svgIcon文件夹及index.vue文件,将svn图标属性参数化,便于在父组件中使用时直接传递相关参数即可:属性需要在属性明前加分号才会生效

<template>
    <svg :style="{width,height}">
        <!-- fill颜色生效需要在图标中删除已有的fill属性值 -->
        <use :xlink:href="prefix + name" :fill="color"></use>
    </svg>
</template>

<script setup lang="ts">
    // 接受父组件传递过来的参数
    defineProps({
        // xlink:href图标前缀
        prefix: {
            type: String,
            default: '#icon-'
        },
        // 受父组件传递的图标名称
        name: String,
        // 接受父组件传递的颜色
        color: {
            type: String,
            default: ''
        },
        // 图标宽度
        width: {
            type: String,
            default: "30px"
        },
        // 图标高度
        height: {
            type: String,
            default: "30px"
        },
    })
</script>

<style scoped>

</style>

页面中使用时引入组件: 

  // 引入svg封装的组件
  import svgIcon from '@/components/SvgIcon/index.vue'

  <svg-icon name="edit" color="pink" width="50px" height="50px"></svg-icon>
  <svgIcon name="copy" color="" width="50px" height="50px"></svgIcon>

三、注册组件为全局组件

        由于对组件的使用需要在每个页面都引入会增加很不多不便,因此将组件注册为全局组件,一次引入,可以在整个项目中使用。

1、在components下创建index.ts文件

// 对外暴露插件对象
import SvgIcon from "./SvgIcon/index.vue"
import Pagintation from "./Pageination/index.vue" 

// 全局变量
const allGloablComponent = {SvgIcon,Pagintation}
export default{
    // 此处必须为install方法名
    install(app){
        // 注册项目全部的全局组件
        Object.keys(allGloablComponent).forEach(key =>{
            // 注册为全局变量
         app.component(key,allGloablComponent[key]);
        })
    }
}

2、在main.ts中注入全局变量

// 1、引入自定义插件对象:注册项目的全局组件
import gloalComponent from '@/components'
app.use(gloalComponent)

四、集成sass

Sass (Syntactically Awesome Style Sheets)是一种流行的预处理器脚本语言,用于扩展CSS的功能。它提供了许多功能,使编写和维护CSS代码更加容易。

1、安装依赖

 pnpm add -D sass

2、添加文件

在src/styles下添加如下三个文件:

index.scss 、reset.scss 、variable.scss

//index.scss添加如下代码,引用reset.scss主要时进行默认样式清除
@import './reset.scss';

 reset.scss文件内容如下,可以在官网查看scss-reset - npm (npmjs.com)

*,
*:after,
*:before {
  box-sizing: border-box;

  outline: none;
}

html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
hgroup,
menu,
nav,
output,
ruby,
section,
summary,
time,
mark,
audio,
video {
  font: inherit;
  font-size: 100%;

  margin: 0;
  padding: 0;

  vertical-align: baseline;

  border: 0;
}

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
  display: block;
}

body {
  line-height: 1;
}

ol,
ul {
  list-style: none;
}

blockquote,
q {
  quotes: none;

  &:before,
  &:after {
    content: '';
    content: none;
  }
}

sub,
sup {
  font-size: 75%;
  line-height: 0;

  position: relative;

  vertical-align: baseline;
}

sup {
  top: -0.5em;
}

sub {
  bottom: -0.25em;
}

table {
  border-spacing: 0;
  border-collapse: collapse;
}

input,
textarea,
button {
  font-family: inhert;
  font-size: inherit;

  color: inherit;
}

select {
  text-indent: 0.01px;
  text-overflow: '';

  border: 0;
  border-radius: 0;

  -webkit-appearance: none;
  -moz-appearance: none;
}

select::-ms-expand {
  display: none;
}

code,
pre {
  font-family: monospace, monospace;
  font-size: 1em;
}

3、配置

在vite.config.ts中添加如下代码,目的是对scss进行全局变量进行配置

export default defineConfig({
  // scss全局变量配置
  css: {
    preprocessorOptions: {
      scss: {
        javascriptEnabled: true,
        additionalData: '@import "./src/styles/variable.scss";',
      },
    },
  },
})

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

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

相关文章

移动端研发技术的进化历程

移动端研发技术 移动端研发技术主要分为原生开发和跨平台开发。本章主要介绍一下移动开发技术的过去、当下和未来&#xff0c;一步一步介绍移动技术的进化历程。 原生开发 原生应用程序是指某一个移动平台&#xff08;比如iOS或Android&#xff09;所特有的应用&#xff0c;使…

【漏洞复现】CERIO DT系列路由器 远程代码执行漏洞

0x01 产品简介 CERIO DT系列路由器是中国台湾智鼎资讯&#xff08;CERIO&#xff09;公司的一款无线路由器。 0x02 漏洞概述 CERIO DT系列路由器在特定版本中存在操作命令注入漏洞。未授权的攻击者可利用该漏洞进行远程代码执行&#xff0c;从而控制服务器。 0x03 测绘语句…

电脑数据守护神:备份文件的重要性与实用方案

一、备份文件&#xff1a;数据安全的第一道防线 在数字化时代&#xff0c;电脑已成为我们生活和工作中不可或缺的一部分。无论是个人用户还是企业组织&#xff0c;电脑中存储的各类文件都承载着重要的信息。然而&#xff0c;随着电脑使用频率的增加&#xff0c;数据丢失或损坏…

R语言复现:如何利用logistic逐步回归进行影响因素分析?

Logistic回归在医学科研、特别是观察性研究领域&#xff0c;无论是现况调查、病例对照研究、还是队列研究中都是大家经常用到的统计方法&#xff0c;而在影响因素研究筛选自变量时&#xff0c;大家习惯性用的比较多的还是先单后多&#xff0c;P&#xff1c;0.05纳入多因素研究&…

第五节:使用SMB开发WebSocket通信

一、概述 本节主要讲解在SMB中如何进行websocket快速开发&#xff0c;实现客户端连接、关闭、消息通讯等功能。 示例下载&#xff1a;https://download.csdn.net/download/lllllllllluoyi/88949743 二、创建WebSocket服务器 1、在csdnProject工程中新建一个消息流。 添加W…

MySQL实战:问题排查与监控

常见问题 有更合适的索引不走&#xff0c;怎么办&#xff1f; MySQL在选取索引时&#xff0c;会参考索引的基数&#xff0c;基数是MySQL估算的&#xff0c;反映这个字段有多少种取值&#xff0c;估算的策略为选取几个页算出取值的平均值&#xff0c;再乘以页数&#xff0c;即…

经验分享:专业知识库的搭建秘诀都在这里啦!

我想必每个人都有过被一堆纷繁复杂的信息搞得头疼不已的时候&#xff0c;对吧&#xff1f;那么你是否想过&#xff0c;如果我们有一个专门收藏整理这些信息的地方&#xff0c;会变得多么方便呢&#xff1f;这就是知识库的作用。所以&#xff0c;接下来我就要向大家分享如何搭建…

如何设计一个高并发的系统--简谈

设计一个高并发系统可以从下面这些角度来考虑。 所谓设计高并发系统&#xff0c;就是设计一个系统&#xff0c;保证它整体可用的同时&#xff0c;能够处理很高的并发用户请求&#xff0c;能够承受很大的流量冲击。 我们要设计高并发的系统&#xff0c;那就需要处理好一些常见…

【MySQL】-知识点整理

1、存储引擎 -- 查询数据库支持的存储引擎 show engines; -- 查询当前数据库使用的存储引擎 show variables like %storage_engines%; 主要的存储引擎说明&#xff1a; 1&#xff09;MyISAM&#xff1a;无外键、表锁、所有索引都是非聚簇索引、无事务、记录表总条数、删除表…

Realsense 相机SDK学习(一)——librealsense使用方法及bug解决(不使用Ros)

一.介绍 realsense相机是一个intel开发出来的一款深度相机&#xff0c;我之前使用他来跑过slam&#xff0c;也配置过他的驱动&#xff0c;在此附上realsense的相机驱动安装方法&#xff1a;Ubuntu20.04安装Intelrealsense相机驱动&#xff08;涉及Linux内核降级&#xff09; …

支持S/MIME证书的邮件客户端有哪些?

S/MIME证书&#xff0c;也叫做邮件安全证书&#xff0c;支持安全/多用途互联网邮件扩展协议&#xff08;S/MIME协议&#xff09;&#xff0c;是通过加密和数字签名来确保电子邮件的安全性、保密性和完整性的数字证书。GDPR、HIPAA、FDA等多个行业都要求邮件发送方在发送邮件时对…

EasyPoi 教程

文章目录 EasyPoi教程文档1. 前传1.1 前言 这个服务即将关闭,文档迁移到 http://www.wupaas.com/ 请大家访问最新网站1.2 Easypoi介绍1.3 使用1.4 测试项目1.5 可能存在的小坑 2. Excel 注解版2.1 Excel导入导出2.2 注解注解介绍ExcelTargetExcelEntityExcelCollectionExcelIgn…

如何在群晖NAS部署WPS容器并实现无公网IP远程访问本地office软件

文章目录 1. 拉取WPS Office镜像2. 运行WPS Office镜像容器3. 本地访问WPS Office4. 群晖安装Cpolar5. 配置WPS Office远程地址6. 远程访问WPS Office小结 7. 固定公网地址 wps-office是一个在Linux服务器上部署WPS Office的镜像。它基于WPS Office的Linux版本&#xff0c;通过…

Express学习(四)

使用Express写接口 创建基本的服务器 创建API路由模块 编写GET接口 编写POST接口 CORS跨域资源共享 什么是CORS CORS由一系列HTTP响应头组成&#xff0c;这些HTTP响应头决定浏览器是否阻止前端JS代码跨域获取资源。浏览器的同源安全策略默认会阻止网页“跨域”获取资源。但如…

AI论文速读 | TPLLM:基于预训练语言模型的交通预测框架

论文标题&#xff1a;TPLLM: A Traffic Prediction Framework Based on Pretrained Large Language Models 作者&#xff1a;Yilong Ren&#xff08;任毅龙&#xff09;, Yue Chen, Shuai Liu, Boyue Wang&#xff08;王博岳&#xff09;,Haiyang Yu&#xff08;于海洋&#x…

【Linux进程的知识点】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档文章目录 前言 操作系统的知识补充 我们来理解一个用户操作接口&#xff1a; 进程的理解 进程的基本概念 描述进程-PCB task_struct-PCB的一种 task_ struct内容分类 …

【四】【算法分析与设计】贪心算法的初见

455. 分发饼干 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&#xff0c;都有…

Terrace联合创始人兼CEO Jesse Beller确认出席Hack.Summit() 2024区块链开发者大会

在科技创新的浪潮中&#xff0c;区块链技术以其独特的去中心化、透明性和安全性&#xff0c;正逐渐成为引领未来发展的重要力量。在这样的背景下&#xff0c;备受瞩目的Hack.Summit() 2024区块链开发者大会即将于4月9日至10日在香港数码港盛大举行。本次大会的亮点之一&#xf…

Linux系统安全②SNAT与DNAT

一.SNAT 1.定义 利用SNAT技术实现2台私网地址都可以访问公网 2.实验环境准备 &#xff08;1&#xff09;三台服务器&#xff1a;PC1客户端、PC2网关、PC3服务端。 &#xff08;2&#xff09;硬件要求&#xff1a;PC1和PC3均只需一块网卡、PC2需要2块网卡 &#xff08;3&a…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Web)中篇

onBeforeUnload onBeforeUnload(callback: (event?: { url: string; message: string; result: JsResult }) > boolean) 刷新或关闭场景下&#xff0c;在即将离开当前页面时触发此回调。刷新或关闭当前页面应先通过点击等方式获取焦点&#xff0c;才会触发此回调。 参数…