当前位置: 首页 > article >正文

从零搭建一个Vue3 + Typescript的脚手架——day2

1.配置ElementPlus

ElementPlus简介
Element Plus 是一个基于 Vue 3 的组件库,它提供了丰富的组件和样式,可以帮助开发者快速构建现代化的 Web 应用。Element Plus 是基于 Element UI 的 Vue 3 版本,它提供了更多的组件和样式,同时也支持 Vue 3 的 Composition API。Element Plus 是一个开源项目,它有丰富的文档和示例,可以帮助开发者快速上手。
安装配置

  • 使用pnpm安装element-plus
pnpm install element-plus 
  • 配置官方的按需导入插件unplugin-vue-componentsunplugin-auto-import这两款插件
pnpm add unplugin-vue-components unplugin-auto-import -D
  • 在vite.config.ts文件中添加配置
// 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()],
    }),
  ],
})

2.封装SvgIcon 组件

Svg简介
Svg 是一种矢量图形格式,它可以在不同的设备和分辨率下保持清晰度。Svg 可以通过 XML 代码来描述图形,因此可以很容易地通过编程来生成和修改图形。Svg 是一种非常灵活的图形格式,它可以在 Web 页面中直接嵌入,也可以通过 JavaScript 来动态生成和修改。Svg 是一种非常流行的图形格式,它被广泛应用于 Web 开发中。
组件封装

  • 使用pnpm安装vite-plugin-svg-icons
pnpm add vite-plugin-svg-icons
  • 安装fast-glob
pnpm add fast-glob -D
  • 配置vite.config.ts文件
import { defineConfig } from 'vite'
import {createSvgIconsPlugin} from 'vite-plugin-svg-icons'; // vite-plugin-svg-icons 用于自动导入 svg 图标

export default defineConfig({
  plugins: [
	createSvgIconsPlugin({
		// 需要自动导入的 svg 文件目录(可自行修改)
		iconDirs: [path.resolve(__dirname, "src/icons")],
		// 执行icon name的格式(可自行修改)
		symbolId: "icon-[dir]-[name]",
		// 更多配置请参考:https://github.com/vbenjs/vite-plugin-svg-icons/blob/HEAD/README.zh_CN.md
	}),
  ]
});

  • 在main.ts文件中引入脚本
import "virtual:svg-icons-register"; // vite-plugin-svg-icons 插件注册,不引入会导致svg图标无法正常显示
  • 封装svg组件
<template>
	<svg :style="iconStyle" aria-hidden="true">
		<use :xlink:href="symbolId" />
	</svg>
</template>

<script setup lang="ts" name="SvgIcon">
import { computed, CSSProperties } from "vue";

interface SvgProps {
	name: string; // 图标的名称(Svg 文件名) ==> 必传
	prefix?: string; // 图标的前缀 ==> 非必传(默认为"icon")
	iconStyle?: CSSProperties; // 图标的样式 ==> 非必传
}

// 接收父组件参数并设置默认值
const props = withDefaults(defineProps<SvgProps>(), {
	prefix: "icon",
	iconStyle: () => ({ width: "50px", height: "50px" }),
});

const symbolId = computed(() => `#${props.prefix}-${props.name}`);
</script>

3.配置PostCss

PostCss简介
PostCSS 是一个用 JavaScript 工具和插件转换 CSS 代码的工具。它可以帮助开发者使用最新的 CSS 特性,并且可以将它们转换为兼容旧浏览器的代码。PostCSS 是一个开源项目,它有丰富的文档和示例,可以帮助开发者快速上手。PostCSS 是一个强大的工具,它可以处理 CSS 代码的许多方面,包括自动添加浏览器前缀、优化 CSS 代码、处理 CSS 变量等。PostCSS 是一个非常重要的工具,它可以帮助开发者更好地使用 CSS,并且可以提高 CSS 代码的质量和性能。
安装配置

  • 安装postcss
pnpm add -D install postcss autoprefixer cssnano
  • 在根目录下创建一个postcss.config.js文件
import autoprefixer from 'autoprefixer'
import cssnano from 'cssnano'
import postcssNesting from 'postcss-nesting'
import cssNext from 'postcss-cssnext'
import postcssPresetEnv from 'postcss-preset-env'

export default  {
    plugins: [
      autoprefixer(), // 自动添加浏览器前缀
      cssnano(), // 压缩css
      postcssNesting(), // 允许使用嵌套语法
      cssNext(), // 使用最新的css语法
      postcssPresetEnv(), // 使用最新的css特性
    ],
  };
  • 因为我们使用的是vite,他会自动识别postcss.config.js文件,所以不需要在vite.config.ts文件中配置

4.配置UnoCss

UnoCss简介
UnoCSS 是一个基于原子 CSS 的现代 CSS 框架,它可以帮助开发者快速构建高性能、可维护的 Web 应用。UnoCSS 是一个开源项目,它有丰富的文档和示例,可以帮助开发者快速上手。UnoCSS 是一个强大的工具,它可以处理 CSS 代码的许多方面,包括自动添加浏览器前缀、优化 CSS 代码、处理 CSS 变量等。UnoCSS 是一个非常重要的工具,它可以帮助开发者更好地使用 CSS,并且可以提高 CSS 代码的质量和性能。
安装配置

  • 安装unocss
pnpm add -D unocss
  • 在vite.config.ts文件中添加配置
import UnoCSS from 'unocss/vite'
import { defineConfig } from 'vite'

export default defineConfig({
  plugins: [
    UnoCSS(),
  ],
})
  • 在根目录下创建一个unocss.config.ts文件
import { defineConfig } from 'unocss'

export default defineConfig({
  // ...UnoCSS options
})
  • 在main.ts文件中引入执行
import "uno.css"

http://www.kler.cn/a/513010.html

相关文章:

  • Qt调用ffmpeg库实现简易视频播放器示例
  • linux如何并行执行命令
  • Windows电脑桌面记录日程安排的提醒软件
  • 2025 最新flutter面试总结
  • 《开源与合作:驱动鸿蒙Next系统中人工智能技术创新发展的双引擎》
  • Linux探秘坊-------3.开发工具详解(2)
  • Linux——入门基本指令汇总
  • ubuntu22.04编译多个版本OpenCV
  • Linux高并发服务器开发 第十五天(fork函数)
  • 领域算法 - 大数据处理
  • Git 详细安装教程以及gitlab添加SSH密钥
  • 微头条业务流程
  • 实战演示:利用ChatGPT高效撰写论文
  • 【C/C++实现】直接插入排序(图例--超详细解析,小白一看就会!)
  • 【单片机通过蜂鸣器模拟警号 救护车 警车 等声音 】
  • node.js+npm的环境配置以及添加镜像(保姆级教程)
  • [LeetCode] 哈希表 I — 242#有效的字母异位词 | 349#两个数组的交集 | 202#快乐数 | 1#两数之和
  • 【Rust自学】13.10. 性能对比:循环 vs. 迭代器
  • Excel 技巧12 - 如何在Excel中输入对号叉号(★),字体Wingdings2
  • 鸿蒙Harmony json转对象(1)
  • Golang 生态学习
  • Git原理与应用(三)【远程操作 | 理解分布式 | 推送拉取远程仓库 | 标签管理】
  • 网络协议如何确保数据的安全传输?
  • 虚幻商城 Fab 免费资产自动化入库
  • bcache的基本操作
  • PHP装修行业小程序