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

梳理vite构建vue项目可选的配置和组件

梳理vite构建vue项目可选的配置和组件

💡 列举通过vite构建vue3项目时可能会使用到的配置和组件,在搭建项目初期可以提前规划,提高开发效率,后续会不断扩展…

unplugin-vue-router

可以监听views文件夹中的文件变化,自动配置路由信息,目录结构即路由。通常layouts文件会存放项目页面布局组件,例如导航栏、侧边栏、页脚等,可以在router的meta属性中设置页面的布局组件。

vite-plugin-vue-meta-layouts

会根据名称自动为路由配置布局。

vite-plugin-mock

用于模拟接口请求。

vite-plugin-vue-devtools

适用于vite构建的vue3项目的开发工具,支持查看组件状态、性能分析、事件追踪。并且该工具与HMR无缝集成,可以实时更新。

vite-plugin-use-modules

自动引入常用modules,减少频繁手动import工具库,按需加载。缺点是引入是一次性的,加载是按需的,可能会引入不必要的模块,不易追踪,增加调试难度。

vite-plugin-compression

使用gzip对指定资源进行压缩,通常在生产环境使用。

vite-plugin-env-types

自动生成环境变量类型声明,根目录下的 .env 用来对项目进行环境变量配置。

vite-plugin-removelog

生产环境下console的日志会被自动去掉。

vitejs/plugin-react

支持在vue文件中使用tsx组件。

unplugin-auto-import

可自动导入常用模块和Api(按需),也支持第三方库配置自动导入,不用每个页面使用前手动import。

unplugin-vue-components

可自动引入自定义组件和第三方组件,如:element-plus、vant等,在vite配置文件配置即可在vue文件中按需引入使用(如果需要全局配置语言等,还是需要在main.ts 中设置)。

unplugin-vue-markdown

支持在页面渲染markdown,以及在markdown中嵌入vue组件。

Icons preset

图标预设,自动引入图标

https://icones.netlify.app/

https://unocss.dev/presets/icons

WindiCSS、UnoCSS、 Tailwind CSS

Css工具库,通过简单的类名来控制元素的样式,减少书写大量重复CSS代码。

Tailwind CSS的核心思想是实用类优先,每个小样式定义为一个类名,可以通过叠加实现复杂样式,减少样式冲突和冗余。UnoCSS是WindiCSS的精神传承,实现方式跟Tailwind CSS类似,核心思想是按需生成和极致的优化,社区尚在发展。

在构建速度和最终css大小方面,UnoCSS的按需生成机制更加有优势,Tailwind CSS需要开启JIT和purge后才会进行tree-shaking,减少最终Css大小,否则会将所有可能用到的类名都编译。

VueUse

提供一系列基于vue的hooks,开箱即用,例如:窗口大小监听、鼠标位置防抖、设备传感器、网络相关、状态管理等方法。

vue-echarts

为vue定制的echarts封装组件,使得echarts携带了生命周期、响应式以及vue指令。

vue-toastification

全局通用toast通知插件,可以在src目录下所有文件中使用。

vue-dark-switch

切换暗黑模式。

VueRequest

SWR的Vue版本请求库。

SMR是一个轻量级用于数据获取的React Hook库,与普通get请求获取数据相比,具有如下优势:支持自动缓存(可以设置缓存过期时间、缓存大小)、实时数据更新(可以设置更新间隔时间和条件,默认会在网络恢复、网页聚焦、查询条件、达到更新时间或条件触发,也可手动触发)、自动重试(默认3次)、增量式数据更新(更新时优先使用缓存数据,接口请求完成后再更新)、分页与无限滚动、依赖请求加载、全局配置与定制化。

Pinia和VueX状态管理工具

Pinia是Vuex的轻量级替代方案,适用于vue3和composition API,适用于中小型项目。

VueX集中管理全局状态,适用于中大型项目。

npm、yarn、pnpm

包管理器。

NProgress

设置跳转进度条。

vitest

单元测试,与Jest相似。

配置路径别名@

// vite.config.js
import { defineConfig } from 'vite';
import path from 'path';

export default defineConfig({
  resolve: {
    alias: {
      '@': path.resolve(__dirname, './src'),
      '@components': path.resolve(__dirname, './src/components'),
      '@utils': path.resolve(__dirname, './src/utils'),
      '@assets': path.resolve(__dirname, './src/assets'),
      '@store': path.resolve(__dirname, './src/store'),
    },
  },
});

i18n国际化

vite 插件 👉 @intlify/vite-plugin-vue-i18n 与 vue插件 vue-i18n。

校验和统一风格

由 eslint 提供的代码规范校验,使用 prettier 统一代码风格。

由 husky + lint-staged 提供的 <font style="color:rgb(31, 35, 40);">git commit</font> 时校验。

全局通用axios请求封装

renovate

借助github的renovate定期检查依赖,进行必要的更新。在执行npm run release 时 会自动进行版本更新,并更新 CHANGELOG.md。

dockerfile

配置 dockerfile,可以将node.js、npm等依赖一起打包在Docker容器,确保开发团队环境的一致性,可以环境隔离,避免不同版本依赖工具冲突、跨平台使得项目在不同操作系统上都能运行。


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

相关文章:

  • 匿名内部类与Lambda表达式不理解点
  • 第34周:文献阅读
  • 基于SSM实现的bbs论坛系统功能实现九
  • git管理的项目 发布时有收费版/免费版/客户定制版,如何管理分支,通过merge(合并) 还是 cherry-pick(挑拣) 引入更新的代码?
  • 25考研数二408部分时间统计
  • 【漫话机器学习系列】109.线性无关(Linearly Independent)
  • DeepSeek 助力 Vue3 开发:打造丝滑的弹性布局(Flexbox)
  • Netty介绍
  • HTML——<head>标签中可放入的标签
  • 计算机毕业设计SpringBoot+Vue.js线上辅导班系统(源码+文档+PPT+讲解)
  • 线上服务器的文件下载到本地Windows电脑
  • Golang | 每日一练 (4)
  • 【uniapp】在UniApp中实现持久化存储:安卓--生成写入数据为jsontxt
  • 【tplink】校园网接路由器如何单独登录自己的账号,wan-lan和lan-lan区别
  • 从神经元到大语言模型及其应用
  • React + TypeScript AI Agent开发实战
  • docker高级
  • SpringSecurity基于JWT实现Token的处理
  • 基于SpringBoot的“青少年心理健康教育网站”的设计与实现(源码+数据库+文档+PPT)
  • 实体机器人识别虚拟环境中障碍物