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

一、环境变量配置

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

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

javascript 复制代码
.env.development

.env.production

.env.test

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

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

在package.json中配置运行命令

javascript 复制代码
 "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、安装依赖插件

javascript 复制代码
pnpm install vite-plugin-svg-icons -D

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

javascript 复制代码
// 引入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中配置插件

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

4、图标使用

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

javascript 复制代码
<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图标属性参数化,便于在父组件中使用时直接传递相关参数即可:属性需要在属性明前加分号才会生效

javascript 复制代码
<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>

页面中使用时引入组件:

javascript 复制代码
  // 引入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文件

javascript 复制代码
// 对外暴露插件对象
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中注入全局变量

javascript 复制代码
// 1、引入自定义插件对象:注册项目的全局组件
import gloalComponent from '@/components'
app.use(gloalComponent)
相关推荐
kyriewen6 小时前
百度用6%成本碾压硅谷?中国AI把性价比玩明白了
前端·百度·ai编程
kyriewen6 小时前
你还在手动敲命令部署?GitHub Actions 让你 push 即上线,摸鱼时间翻倍
前端·面试·github
Csvn8 小时前
Pinia 状态管理
前端
不减20斤不改头像8 小时前
手机一句话开发贪吃蛇!TRAE SOLO 移动端 AI 编程实测
前端·后端
xuankuxiaoyao8 小时前
Vue.js实践-组件基础下
前端·javascript·vue.js
小白学大数据8 小时前
JS 混淆加密下的 Python 爬虫解决方案
javascript·爬虫·python
一棵白菜9 小时前
Claude Code + Amazon Bedrock 使用指南
前端
大家的林语冰9 小时前
前端周刊:axios 疑遭朝鲜黑客“钓鱼“;CSS 新函数上线;npm 上线深色主题;Oxlint 兼容表;ESLint 支持 Temporal......
前端·javascript·css
哀木10 小时前
一个简单的套壳方案,就能让你的 Agent 少做重复初始化
前端
问心无愧051311 小时前
ctf show web入门27
前端