自动导入unplugin-auto-import+unplugin-vue-components

文章介绍

接下来将会以Vite + Vue3 + TS的项目来举例实现

在我们进行项目开发时,无论是声明响应式数据使用的ref、reactive,或是各种生命周期,又或是computed、watch、watchEffect、provide-inject。这些都需要前置引入才能使用:

import { ref, reactive, onMounted, watch, provide} from 'vue'

除了以上这些功能相关的模块外,我们还会涉及到对组件的引用,比如熟知的新建一个项目都会有这两个文件:App.vue 和 HelloWorld.vue,也会在App.vue中看到以下代码:

import HelloWorld from './components/HelloWorld.vue'

这里只是导入了一个组件,如果一个页面由多个组件构成,那将会有很多个 import

现在有两个兄弟可以帮助我们完成自动化引入,无论是上述说的功能模块 or 组件

unplugin-auto-import:可按需自动导入模块,譬如上述的ref、watch等

unplugin-vue-components:自动导入vue的非插件组件,譬如上述的HelloWorld

不知道大家有没有使用过Element+,也就是ElementPlus,在它的按需导入中,有这样的说明

我们要用的也就是这兄弟俩

插件介绍

安装

可以从npm看到两个依赖的一些功能介绍:

npm依赖介绍:unplugin-auto-import - npm (npmjs.com)

npm依赖介绍:unplugin-vue-components - npm (npmjs.com)  

在npm的介绍中还可以看到它对于UI组件库的支持范围还是很广泛的:

这里我采用pnpm作为包管理工具,大家可以根据自己的情况来调整安装方式 

pnpm install -D unplugin-vue-components unplugin-auto-import

除了安装这两个插件之外,为了更好的演示组件的免导入,我这里安装Element+

pnpm install element-plus

配置 

我的项目是vite构建,所以对应的项目构建配置文件是vite.config.ts

为方便管理插件配置,我通常会把插件配置写到一个单独的文件中,再到vite.config.ts中引入,大家可以直接写到配置文件中。

因为要用Element组件库做组件免导入的演示,所以下面配置了ElementPlusResolver相关代码,这块代码大家在Element+的按需导入说明中可以看到;其他配置可以从npm依赖介绍中查看。

// /config/plugin/index.ts
import vue from '@vitejs/plugin-vue';
import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite';
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';export function vitePluginsConfig(command = 'serve') {return [vue({ include: [/\.vue$/, /\.md$/] }),AutoImport({imports: ['vue'],resolvers: [ElementPlusResolver()],dts: 'types/auto-imports.d.ts' // 会在根目录下的types目录中生成该文件——记录自动导入了哪些模块}),Components({dirs: ['src'],dts: 'types/auto-components.d.ts', // 会在根目录下的types目录中生成该文件——记录自动导入了哪些组件resolvers: [ElementPlusResolver()] }),];
}
// vite.config.ts
import { vitePluginsConfig } from './config/plugin'
import { defineConfig } from 'vite'export default defineConfig({plugins: vitePluginsConfig()
})

演示

接下来启动项目,就可以免去 ref 的引用以及 HelloWord 的导入操作了

在没有做全局引入的情况下,HellowWorld 和 el-button 依旧可正常显示 。

 打开自动生成的auto-components.d.ts后可以看到 HelloWorld 和 el-button 已经被自动导入:

 问题 

项目中使用到了Typescript 和 Eslint,以至于这里报错:找不到名称“ref”

这个错误可能会由 ts 提出,也可能由eslint 提出。

该问题会在下一篇文章来说明如何处理。 

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

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

相关文章

基于PSO粒子群优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 粒子群优化算法(PSO) 4.2 分组卷积神经网络(GroupCNN) 4.3 PSO优化GroupCNN 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行…

【已解决】Python ValueError: math domain error 详解

【已解决】Python ValueError: math domain error 详解 在Python编程中,遇到ValueError: math domain error是一个相对常见的问题。此错误通常表明传递给数学函数的参数超出了其定义域。本文将深入探讨此错误的根源、解决思路、具体解决方法、常见场景分析以及扩展…

【在Linux世界中追寻伟大的One Piece】Linux进程概念

目录 1 -> 冯诺依曼体系结构 2 -> 操作系统(operator System) 2.1 -> 概念 2.2 -> 系统调用和库函数 3 -> 进程 3.1 -> 概念 3.2 -> 进程-PCB 3.3 -> 进程状态 3.3.1 -> Z(Zombie)-僵尸进程 3.3.2 -> 孤儿进程 3.4 -> 进程优先级 …

五. TensorRT API的基本使用-TensorRT-network-structure

目录 前言0. 简述1. 案例运行2. 代码分析2.1 main.cpp2.2 model.cpp 总结下载链接参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》,链接。记录下个人学习笔记,仅供自己参考 本次课程我们来学习课程第五章—TensorRT API 的基本使用&#x…

Redisson分布式锁使用详解

引言 日常开发中,难免遇到一些并发的场景,为了保证接口执行的一致性,通常采用加锁的方式,因为服务是分布式部署模式,本地锁Reentrantlock和Synchnorized这些就先放到一边了,Redis的setnx锁存在无法抱保证原…

QT开发(QT的基本概述和环境的安装)

QT的概述 一.QT的介绍背景1.1 什么是QT1.2QT的发展史1.3 Qt支持的平台1.4QT版本1.5QT的优点1.6QT的应用场景 二.搭建QT开发环境2.1 QT的开发工具的下载2.2 QT环境变量配置 三.QT的三种基类四.QT Hello World程序4.1使用按钮实现4.1.1 代码方式实现4.1.2 可视化操作实现 一.QT的…

如何在vscode中对在服务器上多卡运行的bash脚本进行debug?

问题描述 使用vscode可以很方便地添加断点,进行代码调试。 在使用服务器时,我们的python代码通常是通过bash脚本来执行的,那么如何进行debug呢? 待运行的bash 脚本示例 前半段定义了一些参数,后半段是执行python代码…

数据结构的概念和术语

目录 一.前言 二.数据结构的基本概念 三.数据结构的术语 一.前言 数据结构是一门研究非数值计算的程序设计中计算机的操作对象以及它们之间的关系和操作的学科。数据结构的基本数据结构包括两部分,线性结构跟非线性结构。 二.数据结构的基本概念 数据结构主要包括…

压测实操--kafka broker压测方案

作者:九月 环境信息: 操作系统centos7.9,kafka版本为hdp集群中的2.0版本。 kafka broker参数 num.replica.fetchers:副本抓取的相应参数,如果发生ISR频繁进出的情况或follower无法追上leader的情况则适当增加该值&…

CTF ssrf 基础入门

0x01 引言 我发现我其实并不是很明白这个东西,有些微妙,而且记忆中也就记得Gopherus这个工具了,所以重新学习了一下,顺便记录一下吧 0x02 辨别 我们拿到一个题目,他的名字可能就是题目类型,但是也有可能…

划分型dp,CF 1935C - Messenger in MAC

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1935C - Messenger in MAC 二、解题报告 1、思路分析 比较简单的思路是反悔贪心,这里不展开说了,来说一下dp的做法 由于式子里面带绝对值,很烦,我们将pair按…

Bootstrap实现dialog上一步下一步多个弹窗交互

Bootstrap实现dialog上一步下一步多个弹窗交互 版本介绍: Bootstrap v3.3.7jQuery v3.5.1 一、功能介绍 重新设置bootstrap主题色内容区以card形式展示,纯js实现分页功能共两步骤,第一步选择模板,第二步进行其他操作步骤一内的按…

JAVA毕业设计153—基于Java+Springboot+小程序的校园维修管理系统小程序(源代码+数据库)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringboot小程序的校园维修管理系统小程序(源代码数据库)153 一、系统介绍 本项目分为用户、维修员、管理员三种角色 1、用户: 注册、登录、报修申报、报修…

师资培训丨AIGC 技术与大模型应用开发实战线下广州班莅临泰迪智能科技参观调研

7月23日,2024年第二期全国数字人才技能提升师资培训班——AIGC 技术与大模型应用开发实战线下广州班莅临广东泰迪智能科技股份有限公司产教融合实训基地参观调研,来自全国各地三十多名高校教师参与本次活动。泰迪智能科技董事长张良均、校企合作经理吴桂…

【Gin】架构的精妙编织:Gin框架中组合模式的革新实践与技术深度解析(上)

【Gin】架构的精妙编织:Gin框架中组合模式的革新实践与技术深度解析(上) 大家好 我是寸铁👊 【Gin】架构的精妙编织:Gin框架中组合模式的革新实践与技术深度解析(上)✨ 喜欢的小伙伴可以点点关注 💝 前言 本次文章分为上下两部分…

【区块链+绿色低碳】基于区块链的企业碳管理平台 | FISCO BCOS应用案例

在当今全球气候变化和环境问题日益严重的背景下,碳减排已成为全球共同面临的重要任务。作为能源消耗大户, 现代企业必须认识到碳减排的重要性,并采取有效措施实现碳减排。通过完善碳资产管理,企业可以清晰地了解 自身的碳排放情况…

矩估计与最大似然估计的通俗理解

点估计与区间估计 矩估计与最大似然估计都属于点估计,也就是估计出来的结果是一个具体的值。对比区间估计,通过样本得出的估计值是一个范围区间。例如估计一个人的年龄,点估计就是最终直接估计年龄为50岁,而区间估计是最终估计的…

探索原型设计的未来——Axure RP引领设计革新

在快节奏、高效率的现代产品开发过程中,原型设计工具成为了连接创意与实现的桥梁。而提到原型设计,我们不得不提Axure RP —— 一款集高保真原型设计、丰富交互制作及团队协作于一体的工具,已成为众多设计师和产品经理的首选。 获取Axure RP…

electron 网页TodoList应用打包win桌面软件数据持久化

参考: electron 网页TodoList工具打包成win桌面应用exe https://blog.csdn.net/weixin_42357472/article/details/140648621 electron直接打包exe应用,打开网页上面添加的task在重启后为空,历史没有被保存,需要持久化工具保存之前…

从数据时代到智能时代,星环科技信雅达联合发布金融全栈解决方案

近年来,星环科技与信雅达在金融行业的多个关键领域展开了广泛而深入的合作,推出了一系列面向金融科技领域的联合解决方案。此次合作基于星环科技在大数据、人工智能和云计算领域的先进技术,以及信雅达在金融领域的深厚积累,围绕数…