Vue3+Vite项目按需自动导入配置及常见问题修复

news2024/10/6 10:32:08

文章目录

    • 一、Vue API自动导入
      • 1.1 配置`unplugin-auto-import`
      • 1.2 可能遇到ts,eslint不识别而导入报错的问题
        • 1.3 配置src/component目录下的组件自动引入
    • 二、按需引入UI组件库(antd,element-plus)
      • 2.1、按需引入element-plus
        • 2.2 ant-design-vue 按需引入
      • 2.3 自动导入 Element Plus Icon
    • 三、关于配置文件

一、Vue API自动导入

解决的问题:避免在每个vue组件中都重复性的去声明ref,reactive等。如下:

import {ref, reactive} from 'vue' // 配置自动导入,用来省略这句手动引入 
const test = ref('aaaa')

1.1 配置unplugin-auto-import

具体配置:

  • 安装vite插件:unplugin-auto-import
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import AutoImport from 'unplugin-auto-import/vite';
export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等
      imports: ['vue'],
    }),
  ],
});

1.2 可能遇到ts,eslint不识别而导入报错的问题

1、typescript 报错:'reactive' is not defined.

  • 原因:TS未识别到vue api,没有相应的模块声明文件
  • 处理:在vite中配置并生成auto-imports.d.ts ,并在tsconfig.json中引入
    在这里插入图片描述
// vite.config.js
export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等
      imports: ['vue'],
      // 生成自动导入的TS声明文件
       dts: "/auto-import.d.ts", 
    }),
  ],
});
  • tsconfig.json
{
	 "include": [
	    "src/**/*.d.ts",
	    "./*.d.ts",
	    "./auto-imports.d.ts" // 导入上一步生成的配置文件
	  ],
}

2、eslint不识别报错 error 'reactive' is not defined no-undef
在这里插入图片描述
原因:未配置自动导入相应的eslint规则
处理:通过autoimport中的配置生成对应.eslintrc-auto-import.json配置文件,并在.eslintrc中引入

// vite.config.js  
{
	// ......
	 AutoImport({
      imports: ["vue"],
      resolvers: [ElementPlusResolver()],
      dts: "/auto-import.d.ts",
      eslintrc: {
        enabled: true,  // 1、改为true用于生成eslint配置。2、生成后改回false,避免重复生成消耗
      },
    }),
}
 extends: [
    //....此处活力之前配置.
    "./.eslintrc-auto-import.json",
  ],

1.3 配置src/component目录下的组件自动引入

在页面组件中,不用手动导入组件,直接使用组件的方式:

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite';

export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等
      imports: ['vue'],
    }),
	Components({
      // 指定自动导入的组件位置,默认是 src/components
       dirs: ['src/components','src/otherComponents'],
    }),
  ],
});

二、按需引入UI组件库(antd,element-plus)

2.1、按需引入element-plus

官方文档很清晰,用到unplugin-vue-components unplugin-auto-import这两款插件

// 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({
    // 自动导入element相关函数,如:ElMessage, ElMessageBox..
      resolvers: [ElementPlusResolver()],
    }),
    Components({
    // 自动导入element相关组件
      resolvers: [ElementPlusResolver()],
    }),
  ],
})

2.2 ant-design-vue 按需引入

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'

export default defineConfig({
  plugins: [
    vue(),
    Components({
      resolvers: [
        AntDesignVueResolver(),
      ],
    }),
  ]
})

2.3 自动导入 Element Plus Icon

element-plus 图标是用 svg 渲染的,需要额外的导入方法。官方文档对于icons也有相应说明。

  • 安装额外插件:npm install -D unplugin-icons
  • 配置自动导入
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import AutoImport from 'unplugin-auto-import/vite';
import Icons from 'unplugin-icons/vite';
import IconsResolver from 'unplugin-icons/resolver';
import Components from 'unplugin-vue-components/vite';
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';

export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      resolvers: [
        // ....
        // 自动导入图标组件
        IconsResolver({
          prefix: 'Icon',
        }),
      ],
    }),
    Components({
      resolvers: [
 		// .....
        // 自动注册图标组件
        IconsResolver({
          enabledCollections: ['ep'], //@iconify-json/ep 是 Element Plus 的图标库,所以 IconsResolver 配置了 enabledCollections: ['ep']
        }),
      ],
    }),
    Icons({
      autoInstall: true,
    }),
  ],
});

注意:通过此方法自动引入后,使用icon时,请采用以下方式才生效。(添加i-eq作为icon前缀)

<el-icon :size="70" color="#409EFC" class="no-inherit">
 <i-ep-share />
</el-icon>

三、关于配置文件

unplugin-auto-import会默认在要目录生成auto-imports.d.ts文件,unplugin-vue-components对应会在根目录生成components.d.ts文件,分别描述自动导入的 API、component。通过在tsconfig.json的include中引入对应配置文件,避免TS报错。

AutoImport({
  // ...
  // 配置文件生成位置,默认是根目录 /auto-imports.d.ts
  // dts: './auto-imports.d.ts',
}),
Components({
  // ...
  // 配置文件生成位置,默认是根目录 /components.d.ts
  // dts: './components.d.ts',
}),

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

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

相关文章

Qt多线程调用gdal库接口

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 效果图和程序说明 效果图如下: 这个程序是Qt的GUI程序,用于给指定的图像文件创建金字塔。 为什么要使用多线程 使用多线程的好处主要有两点: 1.多线程在很多时候显得更人性化些。比…

计算机研究生就业方向之去大厂做售前

我一直跟学生们说你考计算机的研究生之前一定要想好你想干什么&#xff0c;如果你只是转码&#xff0c;那么你不一定要考研&#xff0c;至少以下几个职位研究生是没有啥优势的&#xff1a; 1&#xff0c;软件测试工程师&#xff08;培训一下就行&#xff09; 2&#xff0c;前…

【Docker】如何用Docker安装Tomcat

专栏精选文章 《Docker是什么&#xff1f;Docker从介绍到Linux安装图文详细教程》《30条Docker常用命令图文举例总结》《Docker如何构建自己的镜像&#xff1f;从镜像构建到推送远程镜像仓库图文教程》《Docker多个容器和宿主机之间如何进行数据同步和数据共享&#xff1f;容器…

关于linux下的xinetd服务

我们在网络通信时候用到socket套接字&#xff0c;有的时候我们更希望Linux能使用http协议等于前端有一定的交互&#xff0c;那么xinetd服务无疑是Linux下一种很好的方法。 什么是xinetd呢&#xff1f;xinetd是新一代的网络守护进程服务程序&#xff0c;又叫超级Internet服务器,…

[附源码]Python计算机毕业设计SSM基于的婚恋系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

ERStudio操作指南

ERStudio操作指南一、创建逻辑模型二、生成SQL脚本本文使用的ER/Studio版本&#xff1a;ER/Studio Version 8.0.2 一、创建逻辑模型 1、打开ER/Studio后&#xff0c;选择&#xff1a;File>New&#xff0c;打开如下界面&#xff0c;选择Draw a new data model。 如上图&am…

接口调用、客户端lb、嵌套JSON解析、慎用 foreach、新建类封装

文章目录接口调用出错推荐客户端负载均衡多层JSON嵌套大数据量 插入慎用foreach使用Api时新建一个类封装、方便维护接口调用出错 故障转移&#xff1a;重试选择其他可用节点&#xff0c;做好幂等性可用&#xff01;&#xff01;&#xff01;快速失败 推荐客户端负载均衡 服务…

如何在 Java 中调用 MATLAB 代码

文章目录测评完整源代码运行环境&#xff1a; MATLAB R2022a Java 8&#xff08;1.8.0_311&#xff09; IntelliJ IDEA 2022.2.1 (Ultimate Edition) Maven 3.8.3 Windows 10 教育版 64位 使用混合编程通常都不是好主意&#xff0c;但是有时候会遇到极端的情况。Java 擅长…

git与github安装与配置

git与github安装与配置 最近总是害怕电脑和实验代码突然出事&#xff0c;想了想&#xff0c;拖了很久的git给搞好&#xff0c;所以花了几个小时&#xff0c;从入门到搭建好&#xff0c;这篇文章与其他文章来说&#xff0c;总体上是大同小异&#xff0c;算是前人的一个总结&…

【python基于mysql数据库实现无页面学生信息管理系统】

python基于mysql数据库实现无页面学生信息管理系统以及简单操作mysql前言一、分步讲解0.创建两张数据表1.大概思路2.首先连接数据库3.查看所有学生成绩信息4.查看所有学生个人信息5.查看指定学生成绩信息6.添加学生个人信息7.添加学生成绩信息8.修改学生个人信息9.修改学生成绩…

多模态融合技术

多模态融合的主要目标是缩小模态间的异质性差异&#xff0c;同时保持各模态特定语义的完整性&#xff0c;并在深度学习模型中取得较优的性能。 一、多模态融合架构 多模态融合架构分为&#xff1a;联合架构&#xff0c;协同架构和编解码器架构。联合架构是将单模态表示投影到…

数据库运维 | 携程分布式图数据库NebulaGraph运维治理实践

作者简介&#xff1a;Patrick Yu&#xff0c;携程云原生研发专家&#xff0c;关注非关系型分布式数据存储及相关技术。 背景 随着互联网世界产生的数据越来越多&#xff0c;数据之间的联系越来越复杂层次越来越深&#xff0c;人们希望从这些纷乱复杂的数据中探索各种关联的需求…

[附源码]Python计算机毕业设计大学生心理健康咨询系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

(免费分享)基于jsp,ssm酒店管理系统

开发工具&#xff1a;eclipse&#xff0c;mysql5.7 Tomcat8.0&#xff0c;jdk1.8 系统分用户前台和管理后台两部分 前台截图&#xff1a; 后台截图&#xff1a; package com.mypower.controller;import java.io.IOException; import java.io.OutputStream; import java.io.P…

行业如此内卷,品牌如何实现可持续招商增长?

文|螳螂观察&#xff08;TanglangFin&#xff09; 作者|陈小江 2019年&#xff0c;厦门的一位单亲妈妈&#xff0c;听了一堂课&#xff0c;驱车十几个小时抵达南京&#xff0c;就为找一个人。 找一个&#xff0c;能救企业的人。 由于股权融资对赌失败&#xff0c;这位原本坐…

【C初阶】第八篇——结构体

结构体的声明 什么是结构体 结构体的声明 结构成员的类型 结构体变量的定义和初始化 结构体成员的访问 结构体传参 结构体的声明 什么是结构体 结构体是一些值的集合,这些值称为成员变量.结构的每个成员可以是不同类型的变量. 结构体的声明 struct tag {member - list…

艾美捷人乳铁蛋白ELISA试剂盒预期用途注意事项

艾美捷Kamiya人乳铁蛋白ELISA试剂盒预期用途&#xff1a; 人乳铁蛋白ELISA是一种高度灵敏的双位点酶联免疫测定&#xff08;ELISA&#xff09;人类生物样品中乳铁蛋白的测定。仅供研究使用。不用于诊断程序。 引言 乳铁蛋白&#xff08;LF&#xff09;是一种具有抗菌活性的多…

Spring源码深度解析十六:@Aspect方式的AOP下篇 - createProxy

一、前言 文章目录&#xff1a;Spring源码深度解析&#xff1a;文章目录 我们上篇已经分析到了 Spring将已经找到所有适用于当前bean 的Advisor 集合。下面就要创建代理对象了&#xff0c;而代理对象的创建是从 AbstractAutoProxyCreator#createProxy()开始。下面我们就来看看…

微信小程序|基于小程序+C#制作一个聊天系统

此文主要基于小程序C#使用WebSocket制作一个聊天系统&#xff0c;基本实现小程序与服务端的聊天功能。用小程序自带的客服功能只能绑定微信且一对一沟通&#xff0c;接入市面上成熟的即时通讯预算又略显不足&#xff0c;干脆自己开发一个也能应对简单的业务场景。 实现流程1、服…

数据智仓功能介绍(二)

界面介绍 访问入口 具备权限的人员从系统管理后台进入界面&#xff0c;点击数据智仓&#xff0c;右侧是展示系统中已经配置的数据集。 数据集展示界面 如下图所示&#xff0c;系统中已经配置的数据集包含 数据集名称&#xff0c;修改人员&#xff0c;上次运行时间&#xff08…